file-upload nginx

file upload - carga de archivo nginx 1.5+-mejores prácticas



file-upload (5)

Estoy buscando cargar archivos a través de mi servidor nginx . Actualmente estoy ejecutando nginx-1.4.6 y estoy dispuesto a pasar al último estable nginx-1.5* según sea necesario.

El favorito de la comunidad es / era el nginx-upload-module Valery Kholodkov, que se encuentra here . Lamentablemente, Valery ya no está manteniendo este módulo, detalles here . A partir de nginx-1.3.9 el módulo funciona parcialmente o no funciona en absoluto.

He compilado el nginx-upload-module en nginx-1.4.6 y estoy obteniendo un error (Client cxn cerrado) que parece estar arreglado en el changeset nginx-1.5.3 . Sin embargo, he aplicado el parche y no tuve suerte.

El post ligeramente actualizado de Anatoly, here , ofrece múltiples soluciones, incluye cuatro soluciones

A medida que me sumerjo en la segunda y cuarta soluciones (prefiero no hacer de lua una dependencia, pero podría), pensé que es apropiado preguntarle a esta comunidad:

¿Cuáles son las mejores prácticas actuales para cargar archivos con nginx-1.5+ ?

Permítanme agregar que estoy cargando archivos desde un comando POST python e intentando probar con curl . PHP no está en mi stack tecnológico.


Hay un buen artículo sobre tu duda. here

Intenté nginx-upload-module. Es una buena solución, pero parece que esto no funciona para las nuevas versiones. También hay algunos módulos en Lua que pueden ayudarte. En mi caso, tenía una lógica de negocio que luego implementé en mi aplicación.

Tenga en cuenta que ese gran problema para cargar archivos es el FILER. Esto es botleneck: una gran cantidad de pruebas de carga que hice me muestran esta conclusión.


Me doy cuenta de que esta es una pregunta muy antigua, pero está en la primera página de búsqueda de Google para "módulo de carga nginx" y es el primer resultado de desbordamiento de pila, por lo que, en caso de que esto ayude a alguien más, se encontrará con esta pregunta:

Estoy usando el nginx-upload-module en nginx 1.10.3. Como la pregunta original menciona, Valery Kholodkov ya no está manteniendo el módulo. Sin embargo, hay varias horquillas diferentes y otras personas la han modificado para que funcione con las versiones más nuevas de nginx.

Esta solicitud de extracción es lo que utilicé para compilar nginx con el módulo de carga.

https://github.com/vkholodkov/nginx-upload-module/pull/88

El módulo de carga, IMO, sigue siendo la mejor solución si usa nginx y php-fpm. Este módulo permite que las cargas sean manejadas completamente por nginx hasta que estén completas, y luego el trabajo de procesar la carga se pasa a PHP. Por lo tanto, los procesos de php-fpm no crearán un cuello de botella cuando los usuarios suban muchos archivos.


Nginx admite el método ''POST'', donde puede usar parámetros grandes. El cliente puede usar php o jsp para usar el método de publicación para compilar la solicitud al servidor nginx.


Solo un borrador rápido pero prueba esto ...

Upload.php if (isset($_FILES[''dlc_file'']) && !empty($_FILES[''dlc_file''])) { if (empty($_FILES[''dlc_file''][''name'']) === true) { echo = "Please choose a file to upload"; } else { $allowed = array(''zip'', ''rar'', ''gzip'', ''tar'', ''7z'', ''png'', ''jpg''); $file_name = $_FILES[''dlc_file''][''name'']; $file_extn = strtolower(end(explode(''.'', $file_name))); $file_temp = $_FILES[''dlc_file''][''tmp_name'']; if (in_array($file_extn, $allowed) === true) { $file_path = ''dlc/'' . substr(md5(time()), 0, 10) . ''.'' . $file_extn; move_uploaded_file($file_temp, $file_path); echo = "Successfully uploaded $file_name"; } else { $file_types = implode('', '', $allowed); echo "File type is not allowed, Allowed file types $file_types"; } } } index.php <form action="upload.php" method="post" enctype="multipart/form-data> <input type="file" name="dlc_file"> <input type="submit" name="submit" value="Upload"> </form>