uwsgi_next_upstream
Директива `uwsgi_next_upstream` определяет условия, при которых сервер NGINX попытается передать запрос следующему серверу в группе, если текущий сервер отказал. — NGINX HTTP Core
Описание
Директива `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 недоступны, запросы могут попасть в цикл повторных попыток, если не заданы соответствующие условия выхода.