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