scgi_next_upstream
Директива `scgi_next_upstream` определяет, какие условия ошибок вызывают повторную попытку отправки запроса на следующий сервер в блоке upstream при использовании SCGI. — NGINX HTTP Core
Описание
Директива `scgi_next_upstream` используется в контекстах, таких как `http`, `server` и `location`, и играет ключевую роль в управлении логикой повторных попыток запросов в модуле SCGI. Когда запрос завершается неудачно из-за указанных условий ошибок, эта директива позволяет администратору указать, следует ли NGINX попытаться отправить запрос на следующий сервер в блоке upstream. К ним относятся таймауты, отказ в подключении или ответы Bad Gateway. Это повышает надёжность и обеспечивает более плавную работу для клиентов, перенаправляя запросы на доступные серверы в случае проблем на стороне сервера. Директива позволяет задать несколько параметров в виде списка, разделённого запятыми, который указывает, как NGINX должен вести себя при возникновении конкретных ошибок. Например, вы можете захотеть повторить запрос при таймауте, но не при 500 Internal Server Error. Понимание последствий каждого условия, включённого в директиву, имеет решающее значение для создания отказоустойчивых приложений. Неправильная настройка директивы может привести либо к ненужным повторным попыткам, которые увеличивают задержку, либо, наоборот, к отсутствию повторных попыток тогда, когда они могли бы быть полезны. Также важно учитывать, как значения по умолчанию взаимодействуют с заданными параметрами. Если значения не определены, NGINX не выполняет повторных попыток, и сочетание директивы с корректными настройками `scgi_pass` обеспечит успешную связь с приложениями SCGI.
Пример конфига
location /some_url {
scgi_pass backend;
scgi_next_upstream error_code timedout http_500;
}Убедитесь, что серверы upstream правильно определены, чтобы избежать ошибок маршрутизации.
Будьте осторожны с чрезмерным использованием повторных попыток; их избыток может привести к ухудшению производительности или накоплению запросов.
Порядок параметров имеет значение; учитывайте влияние каждого указанного условия ошибки.