Открыть сервисСервис

HTTP 502 Bad Gateway

HTTP 502 Bad Gateway — код состояния HTTP, сообщающий, что сервер, выступающий в роли шлюза или прокси, получил недопустимый ответ от вышестоящего (внутреннего) сервера при обработке запроса клиента. Код относится к классу ошибок сервера 5xx и означает, что запрос клиента сформирован корректно, но выполнить его не удалось из-за сбоя на стороне серверной инфраструктуры.

Место в модели HTTP

В клиент-серверной архитектуре запрос часто проходит несколько узлов: браузер → CDN или балансировщик → прокси-сервер (nginx, HAProxy) → приложение. Если прокси не может получить корректный ответ от внутреннего сервера — например, потому что тот не отвечает, отвечает некорректным HTTP-ответом или разорвал соединение, — прокси формирует ответ 502 Bad Gateway. Типичный вид ответа:

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

<html> <head><title>502 Bad Gateway</title></head> <body> <center><h1>502 Bad Gateway</h1></center> <hr><center>nginx</center> </body> </html> ```

Строка заголовка Server указывает, какой именно компонент сформировал ошибку. Текст тела ответа может различаться: Apache пишет «500 Internal Server Error» в ряде случаев, Cloudflare — «Cloudflare 502 Bad Gateway», HAProxy — «502 Bad Gateway» с указанием backend-сервера.

Основные причины

ПричинаОписание
Недоступность внутреннего сервераПроцесс приложения (PHP-FPM, Node.js, Gunicorn) упал или не запущен
Таймаут ответаВнутренний сервер отвечает дольше, чем разрешено таймаутом прокси (по умолчанию в nginx — 60 секунд)
Некорректный ответВнутренний сервер вернул нечитаемые данные, обрезанный ответ или неверные заголовки
Сетевые проблемыРазрыв соединения между прокси и backend, неправильная маршрутизация, битый DNS
Переполнение ресурсовНе хватает памяти, процессов или файловых дескрипторов
Некорректная конфигурацияОшибки в настройках nginx, HAProxy, балансировщика или TLS-сертификатов
ФайрволБрандмауэр блокирует трафик между узлами

Отличие от других ошибок 5xx

  • 500 Internal Server Error — ошибка внутри самого приложения; приложение запущено, но упало при обработке запроса.
  • 502 Bad Gateway — прокси не смог получить корректный ответ от приложения.
  • 503 Service Unavailable — сервер осознанно недоступен (профилактика, перегрузка, режим обслуживания).
  • 504 Gateway Timeout — прокси дождался ответа дольше установленного таймаута, но так его и не получил. 504 — «частный случай» проблем, вызывающих 502, когда внутренний сервер висит, а не отваливается.

Диагностика

При появлении 502 первым делом проверяется доступность backend-процесса: systemctl status php-fpm, systemctl status nginx, просмотр логов приложения. В логах nginx (/var/log/nginx/error.log) ошибка 502 обычно выглядит как connect() failed (111: Connection refused) или upstream prematurely closed connection. Первая ошибка указывает на недоступность процесса, вторая — на его аварийное завершение во время ответа.

Далее проверяются:

  1. Порт backend-сервера: ss -ltnp | grep 8080 — слушает ли процесс нужный порт.
  2. Логи приложения: PHP-FPM (/var/log/php-fpm/), Node.js, Django, Laravel.
  3. Ресурсы: free -h, df -h, top — не исчерпана ли память или диск.
  4. Конфигурация прокси: правильность директив proxy_pass, fastcgi_pass, upstream.
  5. TLS-сертификаты: openssl s_client для проверки цепочки сертификатов между прокси и backend.

Устранение

Типовые действия: перезапуск упавшего сервиса (systemctl restart php-fpm), увеличение таймаутов (proxy_read_timeout 120s; в nginx), исправление конфигурации прокси, освобождение памяти, обновление TLS-сертификатов, настройка мониторинга и авторестарта процессов (systemd Restart=always, supervisor, pm2).

Смежные понятия

В экосистеме веб-серверов аналогичную роль играют Apache с модулем mod_proxy, IIS с ARR (Application Request Routing), Envoy, Traefik. Все они формируют 502 при аналогичных условиях. Код 502 закреплён в RFC 7231 (раздел 6.6.3) и не имеет официальных подтипов: клиент видит только строку 502 Bad Gateway без деталей причины — детали доступны только в логах сервера.

Интересные факты

  • 502 Bad Gateway стал мемом в IT-сообществе: страница ошибки nginx с центрированным заголовком узнаваема настолько, что появляются её пародии и стикеры.
  • Крупные инциденты с 502 затрагивают тысячи сайтов одновременно: в 2017 году сбой Cloudflare вызвал массовые 502 и 503 на десятках тысяч ресурсов, использующих его CDN.
  • Код 502 не содержит информации о внутренней архитектуре сервера, поэтому его безопасно отдавать наружу.

Источники:

  • RFC 7231 — Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content
  • Документация nginx: Module ngx_http_proxy_module
  • Документация HAProxy: HTTP Errors
  • MDN Web Docs: HTTP response status codes
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru