fastcgi_next_upstream

Директива 'fastcgi_next_upstream' в NGINX определяет, в каких случаях запрос FastCGI должен быть передан на следующий сервер в upstream-блоке FastCGI. — NGINX HTTP Core

fastcgi_next_upstream
httpserverlocation
Синтаксисfastcgi_next_upstream error timeout invalid_header http_500;
По умолчаниюnone
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументы1+

Описание

Директива 'fastcgi_next_upstream' позволяет указать, при каких условиях запрос к серверу FastCGI должен быть повторно отправлен на следующий сервер из настроенной группы upstream. Эта директива может принимать один или несколько параметров, которые соответствуют конкретным сценариям, таким как тайм-ауты, не-2xx ответы и ошибки соединения. Включив эту директиву, NGINX способен более корректно обрабатывать потенциальные ошибки сервера, пытаясь выполнить запрос на альтернативном сервере, что повышает устойчивость и надёжность веб-приложений. Например, типичный сценарий использования предполагает развертывание нескольких серверов FastCGI для обработки PHP. Включив директиву 'fastcgi_next_upstream' с параметрами, такими как 'error' и 'timeout', NGINX попытается повторно отправить неудачный запрос на другой настроенный сервер FastCGI, если исходный сервер столкнулся с ошибкой или не отвечает в течение определённого времени. Эта функция особенно полезна в средах с балансировкой нагрузки, где критично поддержание высокой доступности. Полный набор параметров включает опции, такие как 'error', 'timeout', 'invalid_header', 'http_500' и другие, что позволяет тонко настроить, при каких ошибочных условиях должна срабатывать повторная отправка. Возможность повторных попыток на основе ошибок помогает смягчать последствия сбоев отдельных серверов, обеспечивая бесшовный опыт для пользователей и поддерживая высокую доступность. Однако следует внимательно настроить эту директиву, чтобы не создавать дополнительную нагрузку при возникновении ошибок.

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

location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_next_upstream error timeout invalid_header;
    include fastcgi_params;
}

Использование этой директивы с слишком большим количеством параметров может привести к непредвиденному поведению, поэтому важно понимать, что означает каждый параметр.

Убедитесь, что следующий upstream-сервер правильно настроен для обработки запросов; в противном случае он тоже может выйти из строя, что приведёт к циклу повторных попыток.

Чрезмерное использование может привести к снижению производительности, если upstream-серверы часто недоступны.