scgi_request_buffering

Директива `scgi_request_buffering` управляет буферизацией SCGI-запросов в NGINX. — NGINX HTTP Core

scgi_request_buffering
httpserverlocation
Синтаксисscgi_request_buffering on | off;
По умолчаниюon
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументыflag

Описание

Директива `scgi_request_buffering` определяет, включать или отключать буферизацию тел SCGI-запросов. Когда буферизация включена (установлено `on`), NGINX считывает всё тело запроса в память прежде, чем передать его SCGI-серверу. Это может повысить производительность, так как NGINX сможет обработать тело запроса за одну операцию. Однако это также увеличивает потребление оперативной памяти, поскольку большие тела запросов могут превысить доступные лимиты памяти или потреблять чрезмерные ресурсы при большом количестве одновременных запросов. Когда буферизация отключена (установлено `off`), NGINX передаёт тело запроса SCGI-серверу по частям по мере их поступления. Это минимизирует использование памяти и подходит для сценариев, где клиенты отправляют большие объёмы данных, например при загрузке файлов, поскольку сервер может начать обработку данных сразу по мере их получения. Выбор подходящего значения этой директивы зависит от характеристик приложения и типов обрабатываемых запросов. Директива может применяться в различных контекстах, включая `http`, `server` и `location`, что позволяет гибко настраивать поведение в зависимости от правил маршрутизации или обработки. Правильное использование `scgi_request_buffering` важно для оптимизации управления ресурсами и обеспечения отзывчивости приложения.

Пример конфига

location /scgi {
    scgi_pass 127.0.0.1:4000;
    scgi_request_buffering off;
}

Если имеются ограничения по памяти, может потребоваться отключить буферизацию, но учтите, что это может повлиять на производительность.

Неправильная настройка этой директивы может привести к непредвиденным результатам, особенно в приложениях, которые полагаются на обработку всего тела запроса до отправки какого-либо ответа.