proxy_request_buffering
Директива `proxy_request_buffering` управляет тем, будет ли NGINX буферизовать тело запроса для проксируемых запросов.
Описание
Директива proxy_request_buffering в NGINX определяет, как обрабатывается тело проксируемого запроса, в частности — будет ли оно буферизоваться перед отправкой на вышестоящий сервер. По умолчанию, когда proxy_request_buffering включена (что часто так), NGINX считывает всё тело запроса в память или во временные файлы в зависимости от его размера, прежде чем переслать его на вышестоящий сервер. Это позволяет NGINX эффективнее обрабатывать определённые сценарии, например переписывать заголовки или изменять данные запроса на основе конфигураций, применённых до проксирования.
Когда установлено в off, буферизация тела запроса отключается, то есть данные передаются на вышестоящий сервер по мере их получения от клиента. Это может быть полезно в сценариях с большими файлами или потоковой передачей, где буферизация была бы неэффективной или непрактичной. Однако это может увеличить время загрузки при неправильной обработке и осложнить обработку ошибок, так как вышестоящий сервер может не иметь полного тела запроса, пока оно полностью не будет получено от клиента. Кроме того, отключение буферизации может привести к ограничению ресурсов при высокой нагрузке, поскольку тело запроса может обрабатываться как непрерывный поток, а не как целый фрагмент, как это обычно происходит при включённой буферизации.
Пример конфига
location /upload {
proxy_pass http://backend;
proxy_request_buffering off;
}Убедитесь, что upstream-сервер может обрабатывать streaming requests, если buffering отключено.
Учтите, что отключение request buffering может усложнить обработку ошибок и повлиять на производительность при высокой нагрузке.