[http] carga nginx problema client_max_body_size


Answers

¿Su carga muere al final? 99% antes de estrellarse? El cuerpo del cliente y los buffers son clave porque nginx debe almacenar los datos entrantes. Las configuraciones del cuerpo (datos del cuerpo de la solicitud) especifican cómo nginx maneja el flujo masivo de datos binarios de clientes de formularios múltiples en la lógica de su aplicación.

La configuración de clean libera los límites de memoria y consumo al ordenar a nginx que almacene el búfer entrante en un archivo y luego lo borra del disco eliminándolo.

Establezca body_in_file_only para clean y ajustar los búferes para el client_max_body_size . La configuración de la pregunta original ya tenía sendfile, también aumenta los tiempos de espera. Utilizo la configuración a continuación para corregir esto, de forma adecuada en los contextos locales de configuración, servidor y http.

client_body_in_file_only clean;
client_body_buffer_size 32K;

client_max_body_size 300M;

sendfile on;
send_timeout 300s;
Question

Estoy ejecutando nginx / ruby-on-rails y tengo un formulario simple de varias partes para subir archivos. Todo funciona bien hasta que decida restringir el tamaño máximo de archivos que deseo cargar. Para hacer eso, configuro el nginx client_max_body_size en 1m (1MB) y espero un estado de HTTP 413 (entidad de solicitud demasiado grande) en respuesta cuando esa regla se rompe.

El problema es que cuando cargo un archivo de 1.2 MB, en lugar de mostrar la página de error HTTP 413, el navegador se bloquea un poco y luego muere con un mensaje "La conexión se restableció mientras la página se estaba cargando".

He probado casi todas las opciones que ofrece nginx, nada parece funcionar. ¿Alguien tiene alguna idea acerca de esto?

Aquí está mi 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;    
    }    
}

Gracias.

**Edit**

Medio ambiente / UA: Windows XP / Firefox 3.6.13




Links