Я запускаю nginx/ruby-on-rails, и у меня есть простая многочастная форма для загрузки файлов. Все работает нормально, пока я не решит ограничить максимальный размер файлов, которые я хочу загрузить. Для этого я установил nginx client_max_body_size
на 1m (1MB) и ожидает, что статус HTTP 413 (Request Entity Too Large) будет откликаться, когда это правило ломается.nginx upload client_max_body_size issue
Проблема заключается в том, что при загрузке файла размером 1,2 МБ вместо отображения страницы ошибки HTTP 413 браузер немного зависает и затем умирает с сообщением «Соединение было сброшено во время загрузки страницы».
Я пробовал практически каждый вариант, что предлагает nginx, ничего не работает. У кого-нибудь есть идеи об этом?
Вот мой nginx.conf:
worker_processes 1;
timer_resolution 1000ms;
events {
worker_connections 1024;
}
http {
passenger_root /the_passenger_root;
passenger_ruby /the_ruby;
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.x.com;
client_max_body_size 1M;
passenger_use_global_queue on;
root /the_root;
passenger_enabled on;
error_page 404 /404.html;
error_page 413 /413.html;
}
}
Спасибо.
**Edit**
Environment/UA: Windows XP/Firefox 3.6.13
О, я должен указать, что в этом ответе предполагается, что клиент отправляет 'Content-Length', а не выполняет' Transfer-Encoding: chunked'. –
Автор nginx опубликовал патч, чтобы исправить это в списке рассылки: http://nginx.2469901.n2.nabble.com/client-max-body-size-and-100-Continue-413-Request-Entity-Too -Large-tp7582547p7582554.html Нет слов о том, будет ли оно добавлено к ветви 1.2.x. –
Спасибо, это на самом деле многое объясняет. Конечно, выглядит так: «Ожидание» - это способ поиска больших запросов. – krukid