HTTP 502 Bad Gateway

Жалоба посредника: прокси или CDN обратились к настоящему серверу и получили мусор — или вообще ничего — в ответ.

Что означает HTTP 502

HTTP 502 Bad Gateway приходит от промежуточного звена — nginx, балансировщика нагрузки, Cloudflare — которое переслало ваш запрос вышестоящему серверу и получило некорректный ответ: отказ в соединении, сбой посреди ответа или байты, не разбираемые как HTTP.

Виновник почти никогда не сам прокси; обычно это находящийся за ним сервер приложения, который недоступен, перегружен или не отвечает.

Частые причины ошибок 502

  • Сервер приложения (PHP-FPM, Node, gunicorn и т.д.) упал или не запущен.
  • Прокси указывает на неверный порт/сокет, либо файрвол блокирует соединение с вышестоящим сервером.
  • Ответ вышестоящего сервера превысил буферы или истёк тайм-аут посреди передачи.
  • Деплой перезапустил бэкенды во время активного трафика.
  • С CDN вроде Cloudflare: origin-сервер недоступен, при этом edge-узел работает нормально.

Как исправить со стороны посетителя

  • Перезагрузите через минуту — 502 во время деплоев проходят сами.
  • Проверьте страницу статуса сервиса, если проблема повторяется.

Как исправить со стороны разработчика

  • Проверьте, жив ли вышестоящий процесс и слушает ли он адрес, который ожидает прокси.
  • Читайте лог ошибок прокси — nginx точно указывает причину (connect() failed, upstream prematurely closed и т.д.).
  • Проверьте порты, пути unix-сокетов и правила файрвола между прокси и приложением.
  • Добавьте health-check'и, чтобы балансировщик нагрузки прекратил направлять трафик на нерабочие инстансы.

Пример ответа

HTTP/1.1 502 Bad Gateway
Server: nginx
Content-Type: text/html

<html><body><h1>502 Bad Gateway</h1></body></html>

Частые вопросы

В чём разница между 502 и 504?

502 означает, что вышестоящий сервер ответил чем-то некорректным (или отказал в соединении); 504 означает, что он вообще не ответил в течение таймаута.

Почему Cloudflare показывает 502?

Edge-узел Cloudflare не смог получить корректный ответ от вашего origin-сервера — origin недоступен, не отвечает или возвращает некорректные ответы.

Является ли 502 временной ошибкой?

Обычно да — деплои и перезапуски вызывают кратковременные 502. Устойчивые 502 означают, что бэкенд действительно недоступен или неправильно настроен.