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

nginx proxy_buffering и немедленно отправить ответ клиенту

Чтобы разбить вопрос на одно предложение: можно ли включить proxy_buffering в nginx, но сразу же отправить ответ внутреннего сервера клиенту, когда клиент достаточно быстр, чтобы принять его, а если нет, то буферизовать его?

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

Чтобы упростить: мне нужны преимущества обоих: я хочу, чтобы клиент как можно скорее получил первые фрагменты внутреннего сервера, но также я хочу, чтобы все данные с внутреннего сервера, которые не могут быть переданы клиенту (например, медленное соединение) будет буферизироваться nginx, чтобы процесс внутреннего сервера мог быть закрыт как можно скорее.

Чтобы понять, ПОЧЕМУ мне это нужно: у меня есть бэкэнд-сервер php с приложением, которое последовательно сбрасывает вывод. Таким образом, если вы запрашиваете страницу, HTML с css, js и т. Д. Будет сброшен почти сразу после запуска процесса, после чего началась «тяжелая» работа с приложением, и я отправил некоторую часть html фрагментами. Таким образом, преимущество этого заключается в том, что клиент / браузер может начать загружать .js, .css и анализировать их до завершения запроса, поэтому я уменьшаю критический путь рендеринга моего веб-сайта.

Проблема в том, что если proxy_buffering включен, клиент не получит никаких данных для работы, пока не завершится запрос бэкэнда. Если я выключу proxy_buffering, внутренний процесс останется открытым, пока клиент не получит последние данные.

заранее спасибо