Передавать тело запроса напрямую бэкенду — возможно?

Денис Мисюрка infoman1985 at gmail.com
Wed Sep 19 03:28:27 UTC 2012


Задача такая. Есть сервер, на сервере крутятся несколько контейнеров
OpenVZ. Frontend-прокси смотрит на заголовок Host HTTP-запроса и
решает, какому из контейнеров этот запрос отправить.

Конфигурация 1: фронтендом стоит Pound, бэкендом в контейнере крутится
nginx с Passenger и upload_progress_module. Всё прекрасно работает,
прогресс загрузки отображается, все счастливы.

Конфигурация 2: всё то же самое, только для упрощения конфиг-файла,
который должен определять, какому контейнеру какой запрос
обрабатывать, вместо pound поставили тоже nginx, в котором через map
определён список хостов и соотвествующих бэкендов. Не работает.
upload_progress упорно показывает state: starting до самой победы.

Как я понял, это происходит из-за того, что nginx на фронтнде кэширует
запрос сначала в свой внутренний буфер, и только потом отдаёт его
бэкенду. Возможно ли как-то отключить такое поведение и пересылать
запрос в бэкенд напрямую, или придётся ставить upload_progress на
фронтенд и рисковать потерей совместимости с приложениями на других
бэкендах, у которых путь /progress может означать нечто совсем иное и
стать из-за этого недоступным?


Подробная информация о списке рассылки nginx-ru