2012-09-05 20 views
33

Configuré nginx como proxy inverso en mi aplicación node.js para subir archivos con la directiva proxy_pass. Funciona, pero mi problema es que nginx espera que todo el cuerpo del archivo se cargue antes de pasarlo a la corriente ascendente. Esto me causa problemas, porque quiero seguir el progreso de la carga en mi aplicación. ¿Alguna idea de cómo configurar nginx para transmitir el cuerpo del archivo en tiempo real al upstream?archivos nginx carga de transmisión con proxy_pass

+0

¿Recibió alguna solución para esto? – Sreeraj

Respuesta

26

No hay manera de que (al menos por ahora). La solicitud completa siempre se almacenará en el búfer antes de que nginx comience a enviarla a una versión anterior. Para rastrear archivos cargados, puede probar el módulo upload progress.

Actualización: en nginx 1.7.11, la directiva proxy_request_buffering está disponible, lo que permite deshabilitar el almacenamiento en búfer de un cuerpo de solicitud. Sin embargo, se debe usar con cuidado, ver los documentos.

+0

el módulo de progreso de carga es excelente, pero estamos usando varios servidores para el procesamiento de carga detrás del balanceo de carga, por lo que siempre hay posibilidades de que la solicitud de actualización de progreso se enrute a otro servidor (incluso con algunos trucos de equilibrio de carga). – bbbonthemoon

5

Tengine (una horquilla desde nginx) admite la carga no búfer configurando proxy_request_buffering en off.

http://tengine.taobao.org/document/http_core.html

Actualizado: en nginx 1.7.11 la directiva proxy_request_buffering está disponible, como se mencionó anteriormente @Maxim Dounin

+0

Incluso si proxy_request_buffering está desactivado, la solicitud aún está almacenada en el búfer. from the doc: "Cuando apaga el proxy_request_buffering o fastcgi_request_buffering, Tengine enviará el cuerpo al backend ya sea que reciba más datos que client_body_postpone_size o que se haya recibido todo el cuerpo de la solicitud". –

Cuestiones relacionadas