Leider kann ich den Beitrag von cnst nicht kommentieren - daher werde ich hier antworten.
Das nginx_http_proxyModul kommuniziert standardmäßig mit dem Upstream in HTTP / 1.0. Dies kann mit der Richtlinie geändert werden proxy_http_version 1.1.
Dies kann auch die Ursache dafür sein, dass Ihr Skript eine HTTP / 1.0-Antwort zurückgibt, obwohl Chunked Coding und Statuscode 307in dieser Version nicht vorhanden sind.
Sie sollten auch keine Blockcodierung mit einer Umleitung verwenden , da dies nicht wirklich sinnvoll ist.
Darüber hinaus scheint es so, als ob Nginx keine Chunks vom Upstream einzeln an den Client weiterleitet, sondern die Antwort des Upstreams puffert . Das Content-LengthHeader-Feld wird ignoriert, da es gegen die Definition verstößt. Ich musste mir den Quellcode des Moduls ansehen, da dies alles undokumentiert zu sein scheint.
Möglicherweise möchten Sie versuchen, den nginx_tcp_proxy_moduleChunk-Inhalt als TCP-Rohdaten zu vertreten: Modul bei Github
UPDATE (10.04.14)
Das
nginx_http_proxyModul unterstützt
X-Accel-* Header , von denen one (
X-Accel-Buffering: yes|no) steuert, ob die Antwort gepuffert werden soll oder nicht.
Wenn Sie diesen Header ( X-Accel-Buffering: no) zur Antwort des Backends hinzufügen, übergibt nginx Chunks direkt an den Client.
Dieser Header ermöglicht die Steuerung der Pufferung pro Anforderung .
Das Modul verfügt außerdem über eine Konfigurationsanweisung proxy_buffering zum Aktivieren oder Deaktivieren der Antwortpufferung (keine Pufferung bedeutet, dass das Senden von Chunks funktioniert).
Die Proxy-Pufferung (sowohl auf Header- als auch auf Direktivenbasis) ist hier dokumentiert .