fastcgi_buffering
Директива `fastcgi_buffering` управляет тем, нужно ли буферизовать ответы от FastCGI-серверов.
Описание
Директива 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, поскольку большие ответы могут потреблять значительные объёмы памяти.