fastcgi_catch_stderr

Директива 'fastcgi_catch_stderr' управляет тем, будет ли NGINX перехватывать вывод стандартного потока ошибок от приложений FastCGI. — NGINX HTTP Core

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

Описание

Директива 'fastcgi_catch_stderr' используется в контекстах 'http', 'server' и 'location' для управления обработкой сообщений об ошибках, создаваемых приложениями FastCGI. Когда она включена, любые сообщения, отправленные приложением FastCGI в стандартный поток ошибок, будут перехватываться и записываться NGINX, что облегчает отладку и предоставляет видимость проблем приложения непосредственно в журнале ошибок NGINX. По умолчанию эта директива установлена в 'off', то есть NGINX перехватывает только стандартный вывод, если это явно не включено. Эта директива принимает один аргумент: 'on' или 'off'. Установив значение 'on', разработчик может получить ценную информацию об ошибках, которая может быть критически важна для диагностики проблем в приложениях FastCGI, особенно в производственных средах, где просмотр этих логов может заранее указать на возможные ошибки в выполнении кода. Важно учитывать, что чрезмерное логирование может привести к ухудшению производительности, если приложение генерирует много сообщений об ошибках, поэтому рекомендуется аккуратно управлять уровнями логирования. Правильное использование 'fastcgi_catch_stderr' повышает общую сопровождаемость приложений FastCGI, централизуя логирование ошибок через NGINX и предоставляя разработчикам ясное представление о ошибках времени выполнения, которые могут не проявляться в других местах. Тем не менее при использовании этой директивы следует учитывать компромисс с точки зрения производительности при повышенных уровнях детализации логов, особенно при высоких нагрузках.

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

location /api {
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index index.php;
    fastcgi_catch_stderr on;
}

Убедитесь, что ваше приложение FastCGI настроено на вывод ошибок в stderr; в противном случае эта директива не будет иметь эффекта.

Учтите, что включение этой функции может увеличить объём логов, что при высокой нагрузке потенциально приведёт к ухудшению производительности.