uwsgi_next_upstream

Директива `uwsgi_next_upstream` определяет условия, при которых сервер NGINX попытается передать запрос следующему серверу в группе, если текущий сервер отказал. — NGINX HTTP Core

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

Описание

Директива `uwsgi_next_upstream` используется при обработке ошибок, возникающих при взаимодействии с upstream UWSGI-серверами. Она позволяет настроить конкретные коды ответов или условия, которые будут вызывать повторную попытку отправки запроса на следующий сервер в группе upstream. Среди допустимых значений — типичные условия отказа, такие как `timeout`, `invalid_header`, а также диапазон HTTP-кодов состояния, указывающих на ошибки (например, `502`, `503`, `504`). Такая гибкость помогает повысить надёжность веб-приложений, предоставляя резервные варианты на случай проблем с сервером. Когда NGINX сталкивается с ошибкой при обработке UWSGI-запроса, совпадающей с одним из указанных условий отказа, он автоматически попытается перенаправить запрос на следующий сервер, определённый в директиве `uwsgi_pass`. Это значительно повышает устойчивость приложения, предотвращая влияние временных ошибок на конечного пользователя. Параметры директивы можно комбинировать, чтобы обеспечить комплексную стратегию повторных попыток, адаптированную к потребностям конкретного приложения.

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

location /app {
    uwsgi_pass backend;
    uwsgi_next_upstream error 502 503 504;
}

Убедитесь, что upstream servers способны обрабатывать те же запросы, что и исходный сервер, чтобы избежать несогласованного поведения.

Директива должна использоваться только в контексте директив `uwsgi`, таких как `uwsgi_pass`, в противном случае она не имеет эффекта.

Если несколько upstream servers недоступны, запросы могут попасть в цикл повторных попыток, если не заданы соответствующие условия выхода.