ИНСТР-502HTTP 5xx · Server ErrorNginx / Cloudflareревизия 2026-05-07

Ошибка 502 Bad Gateway

HTTP 502 — прокси не смог получить ответ от upstream приложения. Что значит, чем отличается от 500/504, как диагностировать.

⏱ работает в браузере · без регистрации
Инструмент · ИНСТР-502|real-time
calcal.ru / oshibka-502-bad-gateway-chto-eto
Загрузка инструмента…
502
Код ошибки
Bad
Gateway
Proxy
Слой
Upstream
Виноват

Что значит 502 Bad Gateway

502 Bad Gateway — это HTTP-код категории 5xx (server error), означающий «прокси-сервер получил невалидный ответ от upstream-приложения». Понять этот код можно, представив архитектуру современного веб-приложения.

Типичная схема: Пользователь → Cloudflare CDN → Nginx (прокси) → Приложение (Node.js / Python / PHP) → База данных. Когда любое звено в цепи ломается, ошибка появляется на уровне прокси:

  • Если приложение УПАЛО — прокси получает «connection refused» → возвращает 502.
  • Если приложение ОТВЕЧАЕТ мусором — прокси получает невалидный HTTP → 502.
  • Если приложение НЕ ОТВЕЧАЕТ за лимит — прокси возвращает 504 (не 502, это разные коды).

Причины 502

  • Приложение упало. Необработанное исключение, OOM kill, segfault. Самая частая причина.
  • Перезапуск без graceful. Деплой убил старые процессы, новые ещё не стартовали — окно пустоты 1-30 секунд.
  • Memory leak. Приложение медленно ест память, OOM-killer убивает процесс. После рестарта — снова начинает течь.
  • Connection pool exhausted. Соединения с БД исчерпаны, новые запросы блокируются на бесконечное ожидание.
  • Long-running query / deadlock. Один SQL-запрос держит таблицу 5 минут, остальные запросы ждут — worker pool забивается.
  • Перегрузка. Резкий пик трафика — приложение не справляется, начинает отвечать медленно или с ошибками.
  • Конфигурация прокси. nginx upstream настроен на неправильный порт / IP — приложение «не там».
  • SSL handshake failed. Если upstream — HTTPS, и сертификат истёк или не доверяется.
502 Bad Gateway is returned when the server, while acting as a gateway or proxy, received an invalid response from the upstream server. This typically indicates the upstream server is down, unreachable, or returning malformed responses.Nginx documentation, error codes

Как диагностировать 502

  1. Проверьте status приложения.
    # systemd
    systemctl status myapp
    
    # Docker
    docker ps | grep myapp
    docker logs --tail 100 myapp
    
    # Kubernetes
    kubectl get pods -n production
    kubectl logs <pod-name> --tail=100
  2. Логи Nginx.
    tail -f /var/log/nginx/error.log
    
    # Смотрим на:
    # connect() failed (111: Connection refused)  → приложение не запущено
    # upstream timed out (110: Connection timed out) → приложение медленное / зависло
    # upstream prematurely closed connection → приложение упало во время ответа
  3. Проверьте порт.
    netstat -tlnp | grep :3000
    ss -tlnp | grep :3000
    
    # Если порт не слушает — приложение упало.
  4. Память и OOM.
    free -h
    dmesg | grep -i "killed process"
    journalctl -u myapp --since "1 hour ago" | grep -i memory
  5. Health endpoint. Сделайте запрос на /health — если 200 OK значит приложение работает, проблема между прокси и приложением.

Как предотвратить 502

  • Auto-restart. Docker `restart: always`, systemd `Restart=on-failure`, Kubernetes `restartPolicy: Always`. Упало — само поднялось через 5 секунд.
  • Multiple workers. Gunicorn / PM2 запускают 4+ воркеров. Один упал — остальные работают, без пропуска запросов.
  • Graceful shutdown. Принимайте SIGTERM, обрабатывайте in-flight запросы, потом завершайтесь. Не убивайте сразу через SIGKILL.
  • Health check endpoint. /health возвращает 200 если БД, кэш, очереди доступны. 503 если что-то не так.
  • Mониторинг 5xx. Datadog / Grafana / Yandex.Cloud Monitoring — алерт при error rate > 1%.
  • Rate limiting на прокси. Защита от DDoS и неадекватных клиентов.
  • Connection pool sizing. Лимиты соединений с БД, таймауты, retry с экспоненциальным backoff.
  • Blue-green deployment. Развернуть новую версию параллельно, переключить трафик когда новая прогрелась. Без 502.
  • Memory limit + alert. Если приложение ест >80% RAM — алерт. Время разобраться до OOM-kill.
ИСТОЧНИКИ
  1. RFC 9110 — HTTP Semantics. IETF. datatracker.ietf.org/doc/html/rfc9110. 2022.
  2. Nginx error codes — official documentation. Nginx. nginx.org/en/docs/http/ngx_http_proxy_module.html. 2024.
  3. Cloudflare 502 errors — troubleshooting. Cloudflare. developers.cloudflare.com/support/troubleshooting/cloudflare-errors/. 2024.
ЧАСТЫЕ ВОПРОСЫ

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

502 Bad Gateway — HTTP-код, означающий «прокси-сервер получил невалидный ответ от upstream-приложения». Прокси (обычно nginx или Cloudflare) — это посредник между пользователем и приложением. Когда прокси не может получить корректный ответ от приложения, он возвращает 502. Это сигнал «инфраструктура частично работает (прокси да), но связь с приложением сломана».
500 Internal Server Error — bug в самом приложении: исключение, null reference, неперехваченная ошибка. Приложение работает, но ответило с ошибкой. 502 Bad Gateway — приложение НЕ ответило вообще или ответило мусором. Прокси не смог получить валидный ответ. Часто это значит: приложение упало, не отвечает на порту, в процессе перезапуска. Если видите 502 — проверьте, что приложение запущено.
Никак. Это серверная проблема, не клиентская. Что попробовать: (1) Обновить страницу (F5) — иногда временный сбой. (2) Подождать 5-10 минут — приложение может перезагружаться. (3) Очистить cookies браузера — не поможет, но иногда советуют. (4) Использовать VPN — если ваш регион заблокирован Cloudflare. (5) Связаться с поддержкой сайта — у них есть логи.
Cloudflare работает как прокси перед вашим сервером. Если ваш сервер (origin) не отвечает или Cloudflare не может к нему подключиться — выдаётся 520-526 (специфические Cloudflare-коды) или 502. Самые частые причины: (1) origin-сервер выключен. (2) IP origin изменился, не обновили в Cloudflare. (3) DNS неправильно настроен. (4) Файрвол блокирует Cloudflare IP-диапазон.
(1) Проверьте, запущено ли приложение: <code>systemctl status myapp</code> или <code>kubectl get pods</code>. (2) Логи nginx: <code>tail -f /var/log/nginx/error.log</code> — увидите connect() failed или upstream timed out. (3) Проверьте порт приложения: <code>netstat -tlnp | grep :3000</code>. (4) Если приложение в Docker: <code>docker ps</code> и <code>docker logs container-name</code>. (5) Memory: <code>dmesg | tail</code> — может быть OOM-killer.
(1) Приложение упало — необработанное исключение, OOM, segfault. (2) Перезапуск без graceful shutdown — старый процесс убит до старта нового. (3) Memory leak — приложение медленно ест память, потом OOM. (4) Database connection pool exhausted — соединения с БД исчерпаны, новые запросы повисают. (5) Long-running queries — один запрос блокирует worker, остальные не могут пробиться. (6) Отсутствие health check на роутере / load balancer.
(1) Health check endpoint — мониторинг алертит при первых ошибках. (2) Restart policy — Docker / systemd автоматически перезапускают упавший процесс. (3) Multiple workers — gunicorn / pm2 c 4+ воркерами, один упал — другие работают. (4) Graceful shutdown — при перезапуске обработать in-flight запросы. (5) Connection pool tuning — лимиты, timeout, retry. (6) Memory monitoring — алерт при 80% использовании. (7) Blue-green deployment — старая версия работает пока новая прогревается.
Да. Если поисковый бот получает 502, страница не индексируется в этот раз. Если 502 повторяется при каждом визите — страница исключается из индекса через 1-3 месяца. Массовые 502 за короткий период могут понизить trust сайта. Используйте Yandex.Webmaster / Google Search Console для отслеживания серверных ошибок при сканировании.
Лиана Арифметова
АВТОРverifiedред. calcal.ru

Лиана Арифметова

Создатель и главный редактор

Миссия: демократизировать сложные расчёты. Превратить страх перед числами в ясность и контроль. Девиз: «Любая повторяющаяся задача заслуживает своего калькулятора».

Mathematical Engineering · МФТИ · редактирует каталог с 2012 года

Был ли этот калькулятор полезен?

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ

Инструмент справочный — не заменяет эксперта

Только для информационных целей. Все расчёты, результаты и данные, предоставляемые инструментом, носят исключительно ознакомительный и справочный характер. Они не являются профессиональной консультацией — медицинской, юридической, финансовой, инженерной или иной.

Точность результатов. Калькулятор основан на общепринятых формулах и методиках, однако фактические результаты могут отличаться в зависимости от индивидуальных условий, исходных данных и применяемых стандартов. Мы не гарантируем полноту, точность или актуальность приведённых расчётов.

Профессиональные решения — медицинские, финансовые, инженерные — должны приниматься только после консультации с квалифицированным специалистом. Не используйте автоматический расчёт как единственное основание для важных решений.

Ограничение ответственности. Авторы и разработчики сервиса не несут ответственности за прямой или косвенный ущерб, возникший из-за использования данных расчётов. Пользователь принимает на себя всю ответственность за интерпретацию результатов.