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

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

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
Nginx Error 504: Gateway Time-out (upstream timed out 110: Connection timed out) Linux / DevOps

Nginx Error 504: Gateway Time-out (110: Connection timed out) — Решение

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

Клиент ожидает ответа от сервера, после чего получает ошибку 504 Gateway Time-out. В журнале error.log Nginx появляется запись: connect() to upstream timed out (110: Connection timed out) while connecting to upstream.

Уровень сбояХарактер задержкиТочка отказа
Сетевой фильтр (Firewall)Пакеты SYN отбрасываются (DROP) без RSTiptables / Security Groups / pfSense
Маршрутизация (Routing)Нет маршрута к IP бэкендаНеверный Gateway / VPN-туннель упал
Перегрузка бэкендаОчередь TCP backlog (listen queue) переполненаБэкенд физически не может принять TCP SYN
  • Задержка перед появлением ошибки длится ровно столько, сколько задано в proxy_connect_timeout (по умолчанию 60 секунд).
  • Утилита telnet <ip> <port> или nc -zv <ip> <port> зависает без ответа.
  1. Проверьте прямую сетевую доступность бэкенда с хоста Nginx:
    nc -zvw3 <upstream_ip> <upstream_port>
    # Проверьте трассировку маршрута:
    traceroute -n -T -p <upstream_port> <upstream_ip>
  2. Проверьте правила межсетевого экрана на целевом сервере бэкенда:
    # Убедитесь, что входящие пакеты от IP Nginx не блокируются:
    sudo iptables -L -n -v | grep <nginx_ip>
    sudo ufw status verbose
  3. В облачных средах (AWS, GCP, Azure, Yandex Cloud) проверьте Security Groups / Network ACL: разрешен ли входящий порт бэкенда из подсети Nginx.
  4. Проверьте очередь переполнения TCP-сокетов (ListenDrop / ListenOverflow) на бэкенде:
    netstat -s | grep -i listen
    # Увеличьте somaxconn при необходимости:
    sudo sysctl -w net.core.somaxconn=4096
  5. Если задержка вызвана медленным установлением сетевой сессии, скорректируйте тайм-аут в Nginx:
    proxy_connect_timeout 10s; # Уменьшите, чтобы Nginx быстрее реагировал на сбои
  6. Перезагрузите веб-сервер: sudo nginx -s reload.
Важная разница: Connection timed out возникает на этапе установки TCP-соединения (3-way handshake). Если соединение установилось, но бэкенд долго генерирует ответ, возникает ошибка Operation timed out while reading response.
Практический опыт инженера: Если Nginx и бэкенд находятся в разных VPC, убедитесь, что в VPC Peering или Routing Table не слетели статические маршруты после обновления инфраструктуры в Terraform.

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

Чем вызван таймаут ровно через 60 секунд?

Значение 60 секунд является стандартным тайм-аутом директивы proxy_connect_timeout в Nginx. Если бэкенд не прислал TCP SYN-ACK за это время, Nginx рвет сессию по 504 коду.

Почему при ошибке 110 порт кажется открытым через nmap?

Nmap может проверять порт по протоколу UDP или через другие сетевые интерфейсы, в то время как Nginx пытается построить TCP-сессию через конкретный IP, заблокированный файрволом.

Как снизить время ожидания клиента при отказе одной из нод?

Установите proxy_connect_timeout 3s; и настройте директиву proxy_next_upstream error timeout http_502 http_504;.

Может ли MTU вызывать Connection timed out?

Да, при проблемах с фрагментацией пакетов в VPN-туннелях (GRE/IPsec/WireGuard) большие TCP-пакеты могут молча отбрасываться (MTU Blackhole).