Тонких + С Nginx + Загрузить Модуль + Прогресс Загрузки Модуля
Я использую Nginx в качестве обратного прокси для тонких экземпляров.
Моя цель-создать приложение Rails (3) для загрузки больших файлов и что-то с ними делать.
Для этого я наткнулся на модули Nginx Upload и Upload Progress.
Я читал, по большей части, Этот пост, но это специально написал thinking in Passenger.
Если это возможно, я ищу два возможных ответа:
1) Информация примеры реализации этого стека (с Тонкий вместо пассажира)
2) конкретная информация о том, как я мог бы это переписать:
location ^~ /progress {
# report uploads tracked in the 'proxied' zone
upload_progress_json_output;
report_uploads proxied;
}
location @fast_upload_endpoint {
passenger_enabled on;
rails_env development;
}
location / {
rails_env development;
passenger_enabled on;
}
Я не знаю, что такое пассажирский эксклюзив, и как его написать для типичного 4 workers / 3 thin instances conf.
Спасибо.
1 ответ:
Во-первых, вы должны установить nginx с модулем загрузки. Конфигурация nginx для сайта:
upstream uploader_cluster { server unix:/tmp/thin.uploader.0.sock; server unix:/tmp/thin.uploader.1.sock; server unix:/tmp/thin.uploader.2.sock; server unix:/tmp/thin.uploader.3.sock; server unix:/tmp/thin.uploader.4.sock; } server { listen 80; server_name ***.com; charset off; client_max_body_size 1000m; access_log /var/www/uploader/log/access.log; error_log /var/www/uploader/log/error.log; root /var/www/uploader/public; index index.html; location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; if (-f $request_filename/index.html) { rewrite (.*) $1/index.html break; } if (-f $request_filename.html) { rewrite (.*) $1.html break; } if (!-f $request_filename) { proxy_pass http://uploader_cluster; break; } } location ~*uploads$ { if ($request_method = GET) { proxy_pass http://uploader_cluster; break; } # pass request body to here upload_pass @upload_photos; # Store files to this directory # The directory is hashed, subdirectories 0 1 2 3 4 5 6 7 8 9 should exist # i.e. make sure to create /vol/uploads/0 /vol/uploads/1 etc. upload_store /vol/uploads 1; # set permissions on the uploaded files upload_store_access user:rw group:rw all:r; # Set specified fields in request body # this puts the original filename, new path+filename and content type in the requests params upload_set_form_field upload[file_name] "$upload_file_name"; upload_set_form_field upload[file_content_type] "$upload_content_type"; upload_set_form_field upload[file_path] "$upload_tmp_path"; upload_aggregate_form_field upload[file_size] "$upload_file_size"; upload_pass_form_field "^fb_sig_user$|^aid$|^batch_id$|^album_name$|^album_visible$|^caption$|^tags$|^complete$"; upload_cleanup 400 404 499 500-505; } location @upload_photos { proxy_pass http://uploader_cluster; } }