Configurar Nginx para subir archivos grandes

nginx-archivos-grandes.jpg

Una instalación en una distribución moderna de Linux te dará opción para instalar como servidor web a Apache o Nginx, los servidores web más populares hoy día. Hace algunos años para tener Nginx había que descargarlo de un sitio ruso y luego compilarlo a mano, pero ahora es parte base de algunas distribuciones. De forma nativa se establece /var/www/html como directorio para servir a web, pero se puede cambiar en la configuración. Por lo general, nosotros usamos la configuración por defecto y establecemos la configuración de cada sitio en archivo aparte en /etc/nginx/sites-available con su liga simbólica en sites-enabled.

Una vez que tienes la configuración inicial, puedes establecer por servidor o de forma general, el tamaño de archivos que se pueden enviar desde formularios, por defecto deben ser archivos de unos 2MB, algo ridículo hoy día. Si por ejemplo subes varias imagenes a la vez, un buen tamaño para aceptar sun 128MB, así que ponemos esta configuración:

# Digamos que tengo el una configuración en /etc/nginx/sites-enabled/tar.conf
# dentro de la definición de server { } añadimos:
client_max_body_size 128M;

Eso es todo, reiniciamos el servidor y ya podríamos enviar hasta 128MB en archivos (imagenes o lo que sea que acepte nuestro servidor). Ahora, si tenemos PHP en el servidor y es en un formulario de este tipo por donde vamos a recibir los archivos, también tenemos que cambiar la configuración. Lo más usual es que se utilize php-fpm con nginx, así que vamos a ver como cambiamos la configuración:

Digamos que tenemos php 7.2 y la configuración de php-fpm está en /etc/php/7.2/fpm seguramente tendremos ahí al archivo php.ini, buscamos la variable de configuración post_max_size = 128MB y la establecemos en 128MB. Además buscamos file_uploads = on, upload_max_filesize = 128M y por último max_file_uploads = 10 

post_max_size = 128MB
file_uploads = on
upload_max_filesize = 128M
max_file_uploads = 10

Básicamente le indicaremos que puede recibir archivos, que el tamaño máximo será de 128MB y que se pueden enviar hasta 10 archivos máximo a la vez (que en total no deben exceder los 128Mb de tamaño). Una vez cambiada esa configuración, reiniciamos nuestro servidor Nginx y con eso debería bastar para recibir archivos grandes. Si requieres que se puedan recibir aún más grandes es cosa de cambiar la configuración, si estás detrás de un proxy web / CDN es posible que tengas limitaciones, por ejemplo Cloudflare te limita a archivos de 100MB para ser enviados, pero si es un hosting común y corriente no deberías tener problema.

+ fotos / videos

Almacenado en nginx

por Jorge Martínez Mauricio :)

blog / fotos / archivo

Configurar Nginx para subir archivos grandes

tar.mx es un blog sobre fotografía, tecnología y otras chunches

modificado jueves 8 de julio de 2021, 11:20

cuentame