Linux 502Высокая

Nginx 502: как быстро устранить ошибку «Bad Gateway» на сервере

Ошибка 502 «Bad Gateway» в Nginx означает, что сервер не может получить ответ от upstream-сервера. Эта статья поможет вам быстро выявить причину и восстановить работу сайта.

Обновлено 26 июня 2026 г.
5-10 мин
Средняя
FixPedia Team
Применимо к:Nginx 1.20+Ubuntu 22.04 LTSDebian 12

Что означает ошибка 502 в Nginx

Ошибка 502 Bad Gateway появляется, когда Nginx не может получить ответ от upstream-сервера (бэкенда), к которому он перенаправляет запросы. В логах вы увидите точную причину, например:

2026/06/26 12:34:56 [error] 12345#12345: *1 - upstream timed out (110: Connection timed out) while processing request, client: 192.168.1.10, server: example.com, request: "GET / HTTP/1.1", host: "example.com"

Это значит, что Nginx дождался ответ более 60 секунд (или установленный таймаут) и прервал ожидание.

Причины возникновения

  • Отсутствие или неверный конфигурационный файл upstream – неправильный хост, порт или имя хоста.
  • Бэкенд-сервер недоступен – сервис остановлен, заблокирован брандмауэром или упал.
  • Таймаут соединения – upstream-сервер медленно отвечает или сетевое устройство перегружено.
  • Неправильные сетевые правила – firewall блокирует трафик к бэкенду или порту Nginx.
  • Ошибки в конфигурации Nginx – синтаксис, неправильный proxy_pass или include недействительных файлов.

Способы решения

Способ 1: Проверка конфигурации Nginx

Сначала убедитесь, что конфигурация синтаксически корректна и пути до upstream серверов существуют.

# Проверка конфигурации (без перезагрузки)
nginx -t

Если есть ошибка, отредактируйте файл /etc/nginx/nginx.conf или включаемые файлы в /etc/nginx/conf.d/. После исправления выполните команду снова.

💡 Совет: Сохраните последнюю рабочую конфигурацию перед изменениями: cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup.

Способ 2: Проверка доступности upstream-сервера

Убедитесь, что бэкенд-сервер действительно работает и слушает на нужном порту.

# Простой тест с помощью curl (замените на реальные значения)
curl -I http://127.0.0.1:8080
# Альтернатива: netcat
nc -zv 127.0.0.1 8080

Если соединение отклонено, запустите сервис (systemctl start php-fpm, systemctl start node), проверьте его логи или исправьте сетевые правила.

Способ 3: Анализ логов Nginx

Логи ошибок содержат точную причину сбоя upstream.

# Просмотр последних записей
tail -n 50 /var/log/nginx/error.log
# Поиск строк, связанных с 502
grep "502" /var/log/nginx/error.log

Ищите сообщения типа upstream timed out, connection refused или no response. Эти строки укажут на проблемный сервер или порт.

Способ 4: Проверка сетевых правил и брандмауэра

Если брандмауэр блокирует трафик, ошибка 502 также проявится как таймаут.

# Для UFW
ufw status verbose

# Для iptables (пример для chain INPUT)
iptables -L INPUT -n --line-numbers

Разрешите необходимые порты:

# Пример для UFW
ufw allow 8080/tcp
# Пример для iptables (добавить правило в конец)
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT

После изменений перезапустите брандмауэр (systemctl restart ufw или iptables-restore <rules>).

Способ 5: Перезапуск Nginx

Если предыдущие шаги не помогли, перезапустите Nginx, чтобы он перезагрузил соединения с upstream.

systemctl restart nginx
# Проверьте статус
systemctl status nginx

⚠️ Важно: Перед перезапуском убедитесь, что никакие критически важные процессы не используют старый процесс Nginx.

Профилактика

  • Регулярно проверяйте логи – автоматизируйте мониторинг записей upstream timed out с помощью скриптов (tail -f /var/log/nginx/error.log | grep timed out).
  • Используйте health-check – настройте proxy_next_upstream и health_check в конфигурации location для автоматического переключения на другой сервер при ошибках.
  • Ограничьте количество одновременных соединений – добавьте в конфигурацию client_body_buffer_size и proxy_buffering on; для снижения нагрузки.
  • Мониторьте доступность бэкенда – установите monitor.sh, который каждую минуту выполняет curl к бэкенду и отправляет уведомление при сбое.
  • Обновляйте конфигурацию после изменений – после редактирования nginx.conf или upstream файлов всегда выполняйте nginx -t перед перезапуском.

С помощью этих шагов вы сможете быстро устранить ошибку 502 и сделать ваш веб-сайт стабильным. Удачи!

Часто задаваемые вопросы

Что означает ошибка 502 в Nginx?
Как быстро найти причину 502 ошибки?
Можно ли исправить 502 без перезагрузки сервера?
Как предотвратить повторение ошибки 502?

Полезное

Проверьте конфигурацию Nginx
Убедитесь в доступности upstream-сервера
Проанализируйте логи Nginx
Проверьте сетевые правила и брандмауэр
Перезапустите Nginx

Эта статья помогла вам решить проблему?