502 Bad Gateway: что означает ошибка и как её исправить
5 мин чтения
502 Bad Gateway: что означает ошибка и как её исправить

502 Bad Gateway: что означает ошибка и как её исправить

502 Bad Gateway — самая частая из «серверных» ошибок, и при этом самая обманчивая: слово gateway намекает на что-то сетевое, хотя в девяти случаях из десяти дело в упавшем приложении за прокси-сервером. Разбираем, как устроена ошибка, что делать посетителю за две минуты и где искать причину владельцу сайта.

Что на самом деле означает 502

Современный сайт почти никогда не отвечает вам напрямую. Запрос проходит цепочку: браузер → CDN или балансировщик → веб-сервер (обычно nginx) → приложение (PHP, Python, Node.js). Ошибка 502 — это честный доклад промежуточного звена: «я работаю, но тот, кто за мной, ответил ерундой или не ответил вовсе». То есть прокси жив, а бэкенд — нет: он упал, перезапускается или отвечает не по протоколу. Этим 502 отличается от соседей по пятисотой серии, с которыми её постоянно путают:

Код Что говорит прокси Типовая причина
502 Bad Gateway «Бэкенд ответил невалидно или отказал в соединении» Приложение упало или перезапускается
503 Service Unavailable «Сервис намеренно недоступен или перегружен» Техработы, перегрузка
504 Gateway Timeout «Бэкенд жив, но не ответил за отведённое время» Слишком долгий запрос, зависшая база
500 Internal Server Error «Ошибка в самом приложении» Баг в коде, ошибка конфигурации

Полный разбор всех кодов ответа — в нашей статье про коды HTTP; здесь сосредоточимся на конкретной механике 502.

Если вы посетитель: две минуты диагностики

Сразу важное: 502 — ошибка на стороне сайта, а не вашего компьютера. Починить её вы не можете, но можете быстро понять масштаб. Обновите страницу через 20–30 секунд: если 502 вылетела в момент перезапуска приложения (частый случай при деплое), она проживёт секунды. Проверьте сайт с телефона через мобильный интернет и любым онлайн-чекером доступности: если 502 видна отовсюду — инцидент общий, остаётся ждать. Кэш и куки чистить бессмысленно — к этой ошибке они отношения не имеют, что бы ни советовали инструкции из 2012 года.

Если вы владелец: где искать причину

Логика поиска — от приложения к прокси, потому что статистически виновник почти всегда в конце цепочки:

Причина Как выглядит Что делать
Упал процесс приложения (php-fpm, gunicorn, node) В логе nginx — connect() failed / Connection refused to upstream Перезапустить сервис, смотреть его лог на причину падения
Кончилась память — сработал OOM-killer В системном логе — Out of memory: Killed process Больше памяти или меньше воркеров; найти утечку
Деплой или перезапуск Короткие всплески 502 ровно в моменты выкладки Настроить graceful reload вместо жёсткого рестарта
Переполнена очередь воркеров 502/504 в часы пик, в остальное время всё чисто Увеличить пул воркеров, кэшировать тяжёлое
Прокси не достучался до origin (при CDN) CDN отдаёт свою страницу 502, сервер в логах чист Проверить, отвечает ли origin напрямую; файрвол и IP-списки CDN

Ключевой инструмент — лог ошибок прокси (для nginx — error.log): он прямым текстом пишет, что именно не так с бэкендом: connection refused (процесс не слушает), upstream prematurely closed connection (упал в момент ответа) или no live upstreams (балансировщику некому отдать запрос). По этой строке причина находится быстрее, чем по любой инструкции.

Коварство «мигающего» 502

Постоянный 502 находят быстро — сайт лежит, все видят. Опаснее 502 эпизодический: раз в час на несколько секунд, при всплесках трафика или ночных бэкапах. Посетители попадают на ошибку, а вы при ручной проверке — нет. Такие всплески видны только в истории регулярных проверок: если каждая N-я проверка ловит 502 — проблема системная, хоть и прячется.

Как измерить масштаб: доля 502 в логе

Прежде чем чинить, полезно понять, сколько запросов реально страдает. Одна команда по access-логу nginx даёт распределение кодов ответа за сегодня:

awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn

# Когда именно сыпались 502 (по часам):
grep ' 502 ' /var/log/nginx/access.log | awk -F: '{print $2":00"}' | sort | uniq -c

Вторая команда особенно показательна: если 502 кучкуются в конкретные часы — ищите, что происходит в это время (бэкапы, крон-задачи, пики трафика, ночной импорт каталога). Если размазаны равномерно — дело в нестабильности самого приложения. Это десятиминутное упражнение сужает круг подозреваемых лучше любых догадок.

Частные случаи: WordPress, Битрикс, Docker

На WordPress и любом PHP-сайте 502 — это почти всегда php-fpm: упал, перезапустился, кончились воркеры пула (параметр pm.max_children). Смотрите лог php-fpm рядом с логом nginx — там будет либо падение, либо строка «server reached pm.max_children», означающая, что пул надо расширять или искать, кто его занял. На shared-хостинге (включая типичные площадки под Битрикс) прямых логов может не быть — тогда единственный аргумент в диалоге с поддержкой это внешняя статистика: когда и как часто сайт отдавал 502. В Docker-окружении 502 от прокси-контейнера обычно значит, что контейнер приложения перезапускается (смотрите docker ps на счётчик рестартов) либо после пересоздания сменил внутренний адрес, а прокси держит старый — лечится перезагрузкой прокси или нормальным service discovery.

Сколько стоит невидимый 502

Простой пример арифметики. Если сайт ловит 502 суммарно 15 минут в день на всплесках — это 0,7 терпимого на вид аптайма недобора (99,3% вместо 100%). Но 15 минут в день — это 7,6 часа в месяц; при тысяче посетителей в сутки, равномерно размазанных по времени, на ошибку за месяц наткнутся сотни людей — и заметная их часть больше не вернётся. Деньги, которые теряются на нестабильности, мы считали подробно в статье о цене нестабильного сайта.

Как это устроено в Пруфене

Пруфен выполняет HTTP-проверки с интервалом от 2 минут из 13 точек и присылает уведомление, как только сайт начал отдавать 5xx, — в Email, Telegram, Макс или звонком. Для «мигающих» ошибок есть задержка уведомлений: секундный всплеск при деплое не разбудит вас ночью, а настоящий инцидент — дойдёт.

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

502 — это вирус или взлом? Нет. Это штатный код ответа: прокси не смог получить корректный ответ от приложения. К безопасности вашего устройства ошибка отношения не имеет.

Ошибка 502 у всех или только у меня? Почти всегда у всех: она рождается на сервере. Быстрая проверка — открыть сайт с мобильного интернета или через онлайн-чекер; как проверить доступность из разных мест, мы разбирали отдельно.

Вредит ли 502 позициям в поиске? Короткие эпизоды поисковики прощают. Систематические 502 — уже поведенческий и технический сигнал: роботы получают ошибки при обходе, посетители уходят. Стабильно доступный сайт — базовое условие, на котором строится всё остальное SEO.

Как сделать, чтобы 502 не появлялся при каждом деплое? Использовать мягкую перезагрузку вместо жёсткого рестарта: у php-fpm и nginx есть reload, поднимающий новые процессы до убийства старых, у приложений — схемы вида «поднять новую версию рядом, переключить трафик, погасить старую». Если балансировщик умеет health-check'и — он сам выведет перезапускаемый бэкенд из ротации на время рестарта.

Чем 502 отличается от 504? При 502 бэкенд ответил «не то» или отказал сразу; при 504 — не ответил вовремя. Причины и лечение разные, поэтому у нас про 504 отдельный разбор.

Была ли статья полезна?

Начните мониторинг прямо сейчас

Бесплатный тариф — до 5 проверок. 150 ₽ на баланс при регистрации.

Создать аккаунт