Desafortunadamente, no puedo comentar sobre la publicación de cnst, así que voy a responder aquí.
El nginx_http_proxymódulo por defecto habla con el upstream en HTTP / 1.0. Esto se puede cambiar con la directiva proxy_http_version 1.1.
Esta también podría ser la causa de que su script devuelva una respuesta HTTP / 1.0, aunque la codificación fragmentada y el código de estado 307no existen en esta versión.
Tampoco debe usar la codificación fragmentada con una redirección , ya que esto realmente no tiene sentido.
Además , parece que nginx no pasa trozos del flujo ascendente al cliente uno por uno, pero amortigua la respuesta del flujo ascendente . El Content-Lengthcampo de encabezado se ignora porque está en contra de la definición. Tuve que mirar el código fuente del módulo porque todo esto parece no estar documentado.
Es posible que desee probar el nginx_tcp_proxy_moduleproxy del contenido fragmentado como datos TCP sin procesar: Módulo en Github
ACTUALIZACIÓN (10.04.14)
El
nginx_http_proxymódulo tiene soporte para
X-Accel-* encabezados , de los cuales uno (
X-Accel-Buffering: yes|no) controla si la respuesta debe ser almacenada o no.
Agregar este encabezado ( X-Accel-Buffering: no) a la respuesta del backend hará que nginx pase directamente fragmentos al cliente.
Este encabezado permite controlar el almacenamiento en búfer por solicitud .
El módulo también tiene una directiva de configuración proxy_buffering para habilitar o deshabilitar el almacenamiento en búfer de respuesta (no almacenar en búfer significa que el envío de fragmentos funcionará).
El búfer de proxy (basado tanto en encabezado como en directivas) se documenta aquí .