Nginx proxy_buffering: отдавать SSE без задержки
Nginx по умолчанию буферизует ответы upstream, поэтому небольшие события SSE могут приходить клиенту пачкой. Отключите буферизацию только для event-stream маршрута и задайте допустимую паузу между чтениями; сам backend при этом должен отправлять и сбрасывать события.
Передавать события сразу
Добавьте настройки в location, который проксирует endpoint SSE:
location /events/ {
proxy_pass http://backend;
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 1h;
}Backend должен отвечать с Content-Type: text/event-stream, разделять события пустой строкой и своевременно flush-ить вывод. Иначе Nginx не сможет отправить клиенту данные, которых ещё нет в ответе upstream.
proxy_read_timeout ограничивает паузу между последовательными чтениями от backend, а не общую длительность соединения. Подберите значение по heartbeat вашего потока: если событий нет дольше указанного срока, Nginx закроет соединение. Правило proxy_buffering off действует только в выбранном контексте и не отключает буферизацию других location.
Документация: proxy_buffering, proxy_read_timeout.