На жаль, я не можу коментувати публікацію cnst - тому я збираюся відповісти тут.
nginx_http_proxyМодуль за замовчуванням переговорів з верхів'ями в HTTP / 1.0. Це можна змінити за допомогою директиви proxy_http_version 1.1.
Це також може стати причиною того, що ваш сценарій поверне відповідь HTTP / 1.0, хоча 307в цій версії немає кодованого кодування та коду статусу .
Не слід також використовувати чітке кодування з перенаправленням , оскільки це насправді не має сенсу.
Крім того , схоже, що nginx не передає шматки від верхнього потоку до клієнта по черзі, але він буферизує відповідь висхідного потоку . Поле Content-Lengthзаголовка ігнорується, оскільки воно суперечить визначенню. Мені довелося подивитися вихідний код модуля, оскільки все це видається недокументованим.
Можливо, ви захочете спробувати nginx_tcp_proxy_moduleпроксі проксі-фрагмент у вигляді необроблених даних TCP: Модуль в Github
ОНОВЛЕННЯ (10.04.14) модуль має підтримку для
заголовків , один з яких ( ) визначає , буде чи відповідь повинен бути буферизованного чи ні.
nginx_http_proxyX-Accel-* X-Accel-Buffering: yes|no
Додавання цього заголовка ( X-Accel-Buffering: no) до відповіді бекенда призведе до того, що nginx безпосередньо передає фрагменти клієнту.
Цей заголовок дозволяє контролювати буферизацію на основі запиту .
Модуль також має конфігураційну директиву proxy_buffering для включення або відключення буферизації відповіді (не буферизація означає, що відправка фрагментів буде працювати).
Проксі - буферизація (як заголовок і директива основі) документований тут .