Назад | Перейти на главную страницу

Потоковая передача ответов через прокси с помощью gzip на nginx

У меня есть обратный прокси-сервер nginx перед внутренним сервером node.js. В моем приложении узла я могу передавать ответы по мере их готовности, чтобы клиент мог начать загрузку ресурсов, указанных в <head> раздел HTML до получения всего ответа.

Но когда я помещаю nginx между ними, весь ответ буферизуется перед отправкой клиенту. Из этот ответ, Я понимаю, что могу отключить это, установив proxy_buffering off; в моей конфигурации nginx. Однако документы nginx объясните, что без буферизации прокси медленный клиент заставляет серверную часть узла ждать (поэтому по умолчанию буферы nginx).

Я хочу лучшего из обоих миров. Я хочу, чтобы nginx получил ответ и сразу начал передавать его клиенту. Если клиент работает медленнее, чем серверная часть, nginx буферизует ответ от серверной части и передает его клиенту, в то время как серверная часть может обрабатывать другие запросы. О, и я также хочу, чтобы nginx на лету сжимал для меня поток ответов.

Возможна ли конфигурация? Похоже, что со всеми советами по производительности при ранней промывке я не могу быть первым, кому нужна такая настройка. Я просмотрел документы nginx в модуле прокси, но я не смог найти настройку для этого.

Кроме того, что касается gzip, похоже, что способ объединить потоковую передачу с gzip - это выполнить кодирование передачи по частям, которое поддерживает nginx. Но, видимо HTTP / 2 больше не поддерживает это. Какое тогда новое решение? Или "просто работает", когда вы говорите nginx применить gzip к потоку.