Ошибка 502 Bad Gateway
502 означает, что сервер принял соединение, но не получил ответ от внутреннего сервиса — PHP-FPM, приложения или upstream-сервера. Сайт технически «жив», но страницы не отдаются.
Что это значит
Балансировщик (nginx, Cloudflare, ELB) получает запрос и передаёт его приложению. Если приложение не отвечает за отведённое время, обрывает соединение или отдаёт некорректный ответ — балансировщик возвращает 502. Для пользователя это выглядит как «сайт не работает», хотя веб-сервер отвечает.
Частые причины
- Упал PHP-FPM или app-сервер — самая частая причина после деплоя.
- Исчерпан пул воркеров — приложение живо, но не успевает обрабатывать запросы.
- Неверный upstream в конфиге — nginx смотрит в старый сокет или порт.
- Таймаут вышестоящего сервиса — запрос к базе или внешнему API висит дольше лимита.
- Переполнен диск или память — процесс не может писать логи или создавать сокеты.
- Блокировка WAF — защита отдаёт 502 вместо понятной ошибки.
Диагностика за 15 минут
- Проверьте код ответа с внешних точек: если 502 только с одной — проблема в конкретном сервере.
- Откройте
/var/log/nginx/error.log— там будетupstream timed out,connect() failedилиno live upstreams. - Проверьте, что бэкенд запущен:
systemctl status php8.2-fpm,curlна локальный порт. - Сопоставьте время начала ошибки с деплоем, изменением конфига и нагрузкой.
- Проверьте ресурсы: диск, память, лимиты файловых дескрипторов.
Если 502 совпал с релизом — не ищите причину в конфиге. Сначала откатите версию: это быстрее и безопаснее, чем диагностика под нагрузкой.
Как исправить
| Кто | Действие |
|---|---|
| Владелец сайта | Сообщить подрядчику время начала, регионы и коды; проверить, не было ли деплоя или смены тарифа хостинга. |
| Разработчик | Проверить логи приложения, таймауты запросов к БД и внешним API, откатить последний релиз. |
| Администратор | Проверить пул процессов, лимиты, сокеты, ресурсы сервера; увеличить таймауты только после устранения причины. |
Как не допустить повторения
- Включите мониторинг доступности с проверкой каждую минуту и подтверждением с трёх точек.
- Настройте алерт на деградацию: рост p95 и доли 5xx предупреждает о проблеме раньше, чем 502.
- Добавьте проверку после деплоя: сценарий «открыть главную → корзина → оплата».
- Держите health-check эндпоинт, который проверяет зависимости, а не просто отдаёт 200.
Частые вопросы
502 и 504 — в чём разница?
502 — upstream ответил некорректно или закрыл соединение; 504 — upstream не ответил за отведённое время. На практике обе ошибки часто означают одно: бэкенд не справляется.
Почему 502 видит только часть пользователей?
Значит, проблема на одном из серверов за балансировщиком или в одном регионе. Проверка из нескольких точек показывает это сразу.
Может ли 502 отдавать сам антивирус или WAF?
Да. Некоторые WAF и прокси возвращают 502 при блокировке. Проверьте журнал защиты и добавьте IP мониторинга в исключения.