Как я могу запретить Nginx буферизовать вывод моего приложения uwsgi? Для моего приложения в стиле кометы я использую длинный опрос, и теперь запросы буферизуются.
Я пытался уменьшить размер буферов, но мне нельзя ставить uwsgi_buffer_size
и uwsgi_buffers
на 0. Также uwsgi_max_temp_file_size
не работает (хотя в руководстве это сказано).
Как я могу это сделать?
Еще несколько минут назад это было невозможно. nginx всегда буферизует все ответы uwsgi и scgi, и никакая конфигурация этого не изменит.
у меня есть отправил патч для nginx (и это было принято), и со следующей версии есть два метода отключения буферизации для запросов uwsgi:
uwsgi_buffering off
в конфиге nginxX-Accel-Buffering
заголовок "нет" в ответuwsgi никогда не буферизует ответ, поэтому на этом конце настройки не требуется.
Почему бы вам не использовать встроенный http-маршрутизатор / балансировщик нагрузки uwsgi напрямую? Он не выполняет буферизацию, особенно для приложений кометы / веб-сокетов. Вы можете использовать nginx для статических файлов, отображающих их в другой домен.
Попробуйте с uwsgi_max_temp_file_size = 0
В модуле "прокси" Nginx есть директива для этого, она называется proxy_buffering on|off
, который делает именно то, что вы хотите, он отключает буферизацию и синхронно передает исходящий поток прокси. Но AFAIK его нет ни в модулях FastCGI, ни в UWSGI.
Кстати, даже когда proxy_buffering
является off
, вы можете заметить небольшие задержки из-за буферизации стека TCP ОС.