fastcgi_buffering
Директива `fastcgi_buffering` управляет тем, нужно ли буферизовать ответы от FastCGI-серверов. — NGINX HTTP Core
Описание
Директива `fastcgi_buffering`, при установке в значение `on`, включает буферизацию ответов от FastCGI-серверов перед их отправкой клиенту. Этот механизм буферизации позволяет NGINX эффективнее обрабатывать ответы, считывая всё тело ответа от FastCGI-сервера в буфер перед пересылкой клиенту. Напротив, при установке в `off` ответы передаются клиенту сразу после получения, что может повысить отзывчивость ценой ухудшения управления ресурсами, особенно при высокой нагрузке. Когда директива установлена в `on`, NGINX использует несколько предопределённых размеров буферов, которые можно настроить с помощью других директив, таких как `fastcgi_buffers` и `fastcgi_buffer_size`. Такая стратегия буферизации может привести к снижению задержек для клиентов, поскольку NGINX сможет отправлять более крупные куски данных быстрее, когда весь ответ будет получен — это особенно полезно для больших тел ответа. Однако буферизацию нужно управлять осторожно; чрезмерная буферизация может привести к увеличению использования памяти. Эта директива может быть настроена в контекстах `http`, `server` или `location`, что обеспечивает гибкую конфигурацию в зависимости от конкретных потребностей. Важно понимать последствия обоих значений (`on` и `off`) для оптимальной настройки производительности NGINX в соответствии с требованиями приложения.
Пример конфига
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_buffering off;
include fastcgi_params;
}Установка `fastcgi_buffering` в `off` может привести к повышенной загрузке процессора, так как ответы передаются клиентам напрямую без буферизации.
Рекомендуется контролировать использование памяти при использовании `fastcgi_buffering on`, поскольку большие ответы могут потреблять значительные объёмы памяти.