Стоял Apache и веб-сервис (php), который работает постоянно и выдаёт ответ в произвольные моменты небольшими кусочками, всё работало превосходно. Т.е. открываем в браузере адрес и он так может висеть часами выдавая раз в секунду или вообще в произвольное время небольшой ответ по 1 или 2 строчки.
При переезде на стандартную связку Apache + Nginx всё перестало работать. Причина - Nginx не отдаёт ответ, пока не заполнится буфер. Т.е. Apache может выдать 1000 строк и клиент ничего не увидит в браузере и только на 1001 строке Nginx отправит клиенту заполненный буфер. Пока Nginx не накопит 32 килабойта ответа, клиент ничего не получит. Вот конфиг буферов:
client_header_buffer_size 4k;
proxy_buffer_size 32k;
proxy_buffering on;
proxy_buffers 4 32k;
Остальные сайты, которые крутятся рядом с сервисом, стали работать заметно хуже. Если конкретно, то была потеряна отзывчивость, сайты стали открываться только через 0.2-0.5 секунд опять же таки видимо только после того, как Nginx накопит буфер. Т.е. вместо супер быстрой обработки запросов Nginx наоборот ухудшил всё что можно и видимо виноват в этом я.
Я озадачен, подскажите пожалуйста что делаю не так? В goole ответа не нашел, хотя мне кажется такой вопрос уже должен был обсуждаться за столько лет. Ткните носом если есть тема с решением. Как сделать, чтобы Nginx моментально начинал отдавать ответ клиенту синхронно с Apache, а не тогда когда получит буфер?
Понятное дело, что буферы в Nginx созданы чтобы максимально быстро получить ответ от Apache с PHP и освободить их, но как сделать чтобы буфер мгновенно отдавался сразу клиенту начиная с первого полученного в буфер байта?