Sfortunatamente, non posso commentare il post di cnst, quindi risponderò qui.
Il nginx_http_proxymodulo di default parla con l'upstream in HTTP / 1.0. Questo può essere modificato con la direttiva proxy_http_version 1.1.
Questo potrebbe anche essere il motivo per cui lo script restituisce una risposta HTTP / 1.0, sebbene 307in questa versione non esistano codifica a blocchi e codice di stato .
Non dovresti nemmeno usare la codifica a blocchi con un reindirizzamento , poiché questo non ha davvero senso.
Inoltre , sembra che nginx non passi i blocchi dall'upstream al client uno per uno, ma bufferizza la risposta dell'upstream . Il Content-Lengthcampo di intestazione viene ignorato perché è contrario alla definizione. Ho dovuto guardare il codice sorgente del modulo perché tutto ciò sembra essere privo di documenti.
Puoi provare a eseguire il nginx_tcp_proxy_moduleproxy del contenuto in blocchi come dati TCP non elaborati: Modulo su Github
AGGIORNAMENTO (10.04.14)
Il
nginx_http_proxymodulo ha il supporto per le
X-Accel-* intestazioni , di cui una (
X-Accel-Buffering: yes|no) controlla se la risposta deve essere bufferizzata o meno.
L'aggiunta di questa intestazione ( X-Accel-Buffering: no) alla risposta del backend farà sì che nginx passi direttamente i blocchi al client.
Questa intestazione consente di controllare il buffering in base alla richiesta .
Il modulo ha anche una direttiva di configurazione proxy_buffering per abilitare o disabilitare il buffering di risposta (non buffering significa che l'invio di blocchi funzionerà).
Il buffering proxy (sia basato su intestazione sia su direttiva) è documentato qui .