"Entidad de solicitud 413 demasiado grande" en Nginx con el conjunto "client_max_body_size"

55

Estoy cargando un archivo de 26 Gb, pero obtengo:

413 Request Entity Too Large

Lo sé, esto está relacionado con client_max_body_size, así que tengo este parámetro establecido en 30000M.

  location /supercap {
    root  /media/ss/synology_office/server_Seq-Cap/;
    index index.html;
    proxy_pass  http://api/supercap;
  }

  location /supercap/pipe {
    client_max_body_size 30000M;
    client_body_buffer_size 200000k;
    proxy_pass  http://api/supercap/pipe;
    client_body_temp_path /media/ss/synology_office/server_Seq-Cap/tmp_nginx;
  }

Pero sigo recibiendo este error cuando se ha cargado todo el archivo.

usuario2979409
fuente

Respuestas:

72

Modificar el archivo de configuración de NGINX

sudo nano /etc/nginx/nginx.conf

Buscar esta variable: client_max_body_size. Si lo encuentra, simplemente aumente su tamaño a 100M, por ejemplo. Si no existe, puede agregarlo dentro y al final de http

client_max_body_size 100M;

Reinicie nginx para aplicar los cambios.

sudo service nginx restart

Modificar el archivo PHP.ini para los límites de carga

No es necesario en todas las configuraciones, pero es posible que también deba modificar la configuración de carga de PHP para asegurarse de que las configuraciones de php no salgan del límite.

Si está utilizando PHP5-FPM, use el siguiente comando,

sudo nano /etc/php5/fpm/php.ini

Si está utilizando PHP7.0-FPM, use el siguiente comando,

sudo nano /etc/php/7.0/fpm/php.ini

Ahora encuentre las siguientes directivas una por una

upload_max_filesize
post_max_size

e incrementa su límite a 100M, por defecto son 8M y 2M.

upload_max_filesize = 100M
post_max_size = 100M

Finalmente guárdelo y reinicie PHP.

Los usuarios de PHP5-FPM usan esto,

sudo service php5-fpm restart

Los usuarios de PHP7.0-FPM usan esto,

sudo service php7.0-fpm restart

¡Funcionará bien!

Sukhjinder Singh
fuente
1
¿Por qué 100Mb para client_max_body_size en nginx.conf?
user2979409
puede poner cualquier valor de acuerdo con sus requisitos, pero 100 mb es suficiente
Sukhjinder Singh
pero estoy cargando archivos de hasta 30 Gb.
user2979409
encontrar un archivo de tamaño máximo y permitirle más que ese archivo
Sukhjinder Singh
Entonces, ¿por qué client_max_body_size no funciona dentro de mi / ubicación?
user2979409
9

Si está cargando archivos de ese tamaño, probablemente debería deshabilitar la comprobación del tamaño del cuerpo por completo con:

client_max_body_size 0;
devius
fuente
3

Con respecto, no estoy seguro de por qué está utilizando http para transferir esa cantidad de datos. Tiendo a hacer mis transferencias grandes sobre ssh

//such as:
tar cjf - /path/to/stuff | ssh user@remote-host "cd /path/to/remote/stuff;tar xjf -"

... que me da una transferencia comprimida bzip. Pero si tuviera que hacer una transferencia reanudable, podría usar sftp, lftp, incluso rsync. Cualquiera de esos (o sus derivados o hermanos) es capaz de

  1. empleando un canal encriptado si lo desea,
  2. reanudar una transferencia interrumpida y
  3. comprimiendo la transferencia

Solo uno de esos sería una opción para usted cuando intente cargar a través de http (es decir, # 1 si estaba en https).

Espero que busque en cualquiera de las anteriores o en varias otras alternativas.

Matt Murphy
fuente
Esto no tiene nada que ver con la pregunta.
Zenklys
1
Solo está allí porque el tipo está transfiriendo archivos a escala Blueray a través de http. Sin tener más detalles de por qué alguien querría hacer esto, considero que el tipo que hace la pregunta sería mejor no respondiendo con éxito. Reconozco que mi ignorancia de esos detalles es un problema.
Matt Murphy