Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
Nginx Error: upstream server is temporarily blacklisted due to fail_timeout Linux / DevOps

Nginx: upstream server is temporarily blacklisted — Балансировка

Обновлено: 18.08.2026  ·  Официальная база знаний

Nginx перестает отправлять запросы на один или несколько серверов из балансировочного пула, возвращая клиентам ошибки 502 Bad Gateway или 504 Gateway Timeout. В журнале фиксируется исключение ноды: upstream server <IP:port> is temporarily blacklisted due to fail_timeout или no live upstreams while connecting to upstream.

Параметр UpstreamЗначение по умолчаниюСледствие для кластера
max_fails=11 неудачная попыткаНода выбивается из балансировки при единичной сетевой флуктуации
fail_timeout=10s10 секундСервер полностью изолируется от клиентского трафика на данный интервал
proxy_next_upstreamerror timeoutОпределяет, какие именно статусы считаются поводом для блэклиста
  • Полноценно работающий бэкенд перестает получать запросы из-за разового долгого SQL-запроса или всплеска latency.
  • При высокой нагрузке серверы поочередно выпадают в блэклист («эффект домино»), полностью парализуя сервис.
  1. Откройте конфигурацию балансировочного пула в nginx.conf.
  2. Увеличьте порог допустимых ошибок max_fails и скорректируйте окно тайм-аута fail_timeout:
    upstream backend_cluster {
        # Разрешаем до 5 сбоев в течение 30 секунд перед временным отключением ноды на 15 секунд:
        server 10.0.1.10:8080 max_fails=5 fail_timeout=30s;
        server 10.0.1.11:8080 max_fails=5 fail_timeout=30s;
        server 10.0.1.12:8080 backup;
    }
  3. Если вы хотите полностью отключить механизм исключения серверов (чтобы Nginx всегда пытался отправить запрос):
    upstream backend_cluster {
        server 10.0.1.10:8080 max_fails=0;
        server 10.0.1.11:8080 max_fails=0;
    }
  4. Точно настройте условия, при которых ошибка считается сбоем ноды (исключив клиентские ошибки 4xx и некритичные статусы):
    location / {
        proxy_pass http://backend_cluster;
        # Переключаться на следующий бэкенд только при явных фатальных ошибках:
        proxy_next_upstream error timeout invalid_header http_502 http_503;
        proxy_next_upstream_tries 3;
        proxy_next_upstream_timeout 10s;
    }
  5. Проверьте синтаксис и примените конфигурацию: sudo nginx -t && sudo systemctl reload nginx.
Внимание: Если бэкенд выполняет неидемпотентные POST-запросы (списание баланса, создание заказа), не включайте non_idempotent в proxy_next_upstream, иначе при таймауте запрос может повторно выполниться на другой ноде, вызвав дублирование транзакции!
Практический опыт инженера: Для критически важных сервисов выставляйте `max_fails=3 fail_timeout=10s` совместно с `proxy_next_upstream_timeout 5s;`. Это предотвратит каскадный коллапс пула при временном подвисании одного инстанса.

Частые вопросы (FAQ)

Как Nginx возвращает сервер обратно в строй после fail_timeout?

После истечения интервала fail_timeout Nginx аккуратно пропускает ровно один клиентский запрос на проблемный сервер. Если он отрабатывает успешно, сервер снова считается живым.

Что означает директива server ... backup?

Сервер с флагом backup никогда не получает трафик в штатном режиме. Он активируется Nginx только в том случае, если все основные серверы пула вышли из строя.

Считаются ли ответы HTTP 500 сбоем для max_fails?

По умолчанию нет. Сбоями считаются только сетевые ошибки TCP, таймауты соединения и некорректные заголовки, если иное не задано в proxy_next_upstream.

Что произойдет, если все ноды пула превысят max_fails?

Nginx сбросит все таймеры блокировки и моментально вернет ошибку '502 Bad Gateway: no live upstreams'.