IEstoy ejecutando nginx como un extremo delantero para el servidor Apache + mod_fastcgi basado en php. Mi aplicación permite al sucesor cargar imágenes de hasta 2 MB de tamaño. Cuando los usuarios que intentan cargar un archivo de imagen de tamaño superior a 1,5 MB utilizando el proxy inverso nginx, reciben el venidero error en la pantalla:
Entidad de solicitud Nginx 413 demasiado amplio
¿Cómo soluciono este problema y permito la carga de imágenes de hasta 2 MB de tamaño utilizando el servidor web nginx que funciona en modo proxy inverso o independiente en sistemas operativos similares a Unix?
Detalles del tutorial | |
---|---|
Dificultad | Comprensible (rss) |
Privilegios de root | sí |
Requisitos | Nginx en Linux o Unix |
Hora | 5m |
El error «Solicitud de entidad 413 muy extensa”Indica que el servidor web está configurado para restringir archivos de gran tamaño. Nginx se puede configurar para permitir el tamaño mayor del cuerpo de la solicitud del cliente usando client_max_body_size directiva. Si el tamaño de una solicitud excede el valencia configurado, el error 413 (Solicitud de entidad demasiado amplio) regresa al cliente. Verá un error de la venidero forma:
Debe configurar tanto nginx como php para permitir el tamaño de carga.
Tabla de Contenidos
Configuración de Nginx
Para solucionar este problema, edite su nginx.conf. Rada la Terminal o inicie sesión en el servidor remoto usando el cliente ssh. Escriba el venidero comando para editar su nginx.conf usando un editor de texto como vi, joe o nano:# vi /etc/nginx/nginx.conf
Utilice el editor de texto nano:$ sudo nano /etc/nginx/nginx.conf
Debe ejecutarse como root:# vi /usr/restringido/nginx/conf/nginx.conf
Agregue la venidero vírgula a http o servidor o situación contexto para aumentar el divisoria de tamaño en nginx.conf, ingrese:
# set client body size to 2M #
client_max_body_size 2M;
los client_max_body_size La directiva asigna el tamaño de cuerpo mayor aceptado de la solicitud del cliente, indicado por la vírgula Content-Length en el encabezado de la solicitud. Si el tamaño es maduro que el poliedro, el cliente recibe el error «Solicitar entidad demasiado amplio» (413).
Guarde y clausura el archivo. Vuelva a cargar el servidor web nginx, ingrese:# /usr/restringido/nginx/sbin/nginx -s reload
Use nginx para recargarlo:# /sbin/nginx -s reload
Para RHEL / CentOS / Debian / Ubuntu Linux, intente:# service nginx reload
Si está utilizando un sistema basado en systemd, ejecute:$ sudo systemctl reload nginx.service
Configuración de PHP (opcional)
Su instalación de php además pone límites al tamaño del archivo de carga. Edite php.ini y establezca las siguientes directivas
;This sets the maximum amount of memory in bytes that a script is allowed to allocate memory_limit = 32M ;The maximum size of an uploaded file. upload_max_filesize = 2M ;Sets max size of post data allowed. This setting also affects file upload. To upload large files, this value must be larger than upload_max_filesize post_max_size = 3M
Si está utilizando PHP-FPM, reinícielo de la venidero forma:$ sudo systemctl restart php-fpm
## OR ##
$ sudo systemctl restart php7.0-fpm.service
## OR ##
$ sudo /usr/restringido/etc/rc.d/php-fpm restart
Guarde y clausura el archivo. Asegúrese de retornar a cargar / reiniciar el servidor web back-end apache o nginx según su configuración. Consulte el tutorial “PHP Increase Upload File Size Limit” para obtener más información.
Esté atento a los errores de permisos además
Por otra parte de configurar Nginx y PHP, debe estar atento a los errores de permisos de archivos. Por lo universal, inicia sesión en el archivo error.log de su servidor web. Aquí hay un error de muestra registrado en mi servidor web lighttpd:
2017-07-18 07:09:18: (connections.c.1095) denying upload as opening to temp-file for upload failed: /var/cache/lighttpd/uploads/lighttpd-upload-9UMUXj Permission denied 2017-07-18 07:23:45: (connections.c.1095) denying upload as opening to temp-file for upload failed: /var/cache/lighttpd/uploads/lighttpd-upload-a4PNg1 Permission denied 2017-07-18 07:25:50: (connections.c.1095) denying upload as opening to temp-file for upload failed: /var/cache/lighttpd/uploads/lighttpd-upload-xIzdjU Permission denied 2017-07-18 07:27:30: (connections.c.1095) denying upload as opening to temp-file for upload failed: /var/cache/lighttpd/uploads/lighttpd-upload-2s3I9J Permission denied 2017-07-18 07:29:04: (connections.c.1095) denying upload as opening to temp-file for upload failed: /var/cache/lighttpd/uploads/lighttpd-upload-9KNsVa Permission denied 2017-07-18 07:30:19: (connections.c.1095) denying upload as opening to temp-file for upload failed: /var/cache/lighttpd/uploads/lighttpd-upload-myoWrl Permission denied
Para solucionar este problema, debe configurar el permiso correcto mediante el comando chmod o el comando chown:$ sudo chown -R lighttpd:lighttpd /var/cache/lighttpd/
Consulte además Fix cliente destinado a destinar un cuerpo demasiado amplio: xyz bytes en Nginx.