Używam nginx / ruby-on-rails i mam prosty formularz wieloczęściowy do przesyłania plików. Wszystko działa dobrze, dopóki nie zdecyduję się ograniczyć maksymalnego rozmiaru plików, które chcę przesłać. Aby to zrobić, ustawiłem nginx client_max_body_size
na 1 m (1 MB) i oczekuję statusu HTTP 413 (żądanie zbyt dużej jednostki) w odpowiedzi, gdy ta reguła zostanie złamana.
Problem polega na tym, że kiedy przesyłam plik o rozmiarze 1,2 MB, zamiast wyświetlać stronę błędu HTTP 413, przeglądarka trochę się zawiesza, a następnie umiera z komunikatem „Połączenie zostało zresetowane podczas ładowania strony”.
Wypróbowałem prawie każdą opcję, którą oferuje nginx, nic nie wydaje się działać. Czy ktoś ma jakieś pomysły na ten temat?
Oto mój 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;
}
}
Dzięki.
**Edit**
Środowisko / UA: Windows XP / Firefox 3.6.13
Content-Length
raczej wysyła niż robiTransfer-Encoding: chunked
.