scgi_request_buffering
Директива `scgi_request_buffering` управляет буферизацией SCGI-запросов в NGINX. — NGINX HTTP Core
Описание
Директива `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;
}Если имеются ограничения по памяти, может потребоваться отключить буферизацию, но учтите, что это может повлиять на производительность.
Неправильная настройка этой директивы может привести к непредвиденным результатам, особенно в приложениях, которые полагаются на обработку всего тела запроса до отправки какого-либо ответа.