Фактический маршрут
Фиксируем CDN, балансировщик, веб-сервер, приложение, PHP-FPM, контейнеры и внешние API, участвующие в запросе.
Bad Gateway
Проверяем всю цепочку от CDN или Nginx до приложения: доступность upstream, сокеты, процессы, контейнеры, таймауты и ответы. Исправляем подтверждённую причину, а не только страницу ошибки.
От шлюза к приложению
RFC 9110 определяет 502 как ситуацию, когда шлюз или прокси получил недопустимый ответ от входящего сервера. Это отличает ошибку от общего внутреннего сбоя 500 и требует проверки связи между компонентами.
Фиксируем CDN, балансировщик, веб-сервер, приложение, PHP-FPM, контейнеры и внешние API, участвующие в запросе.
Проверяем адрес, порт или сокет, DNS внутри инфраструктуры, доступность процесса и соответствие протокола.
Сопоставляем время 502 с error log прокси, системным журналом, журналом приложения и событиями перезапуска.
Проверяем остановки, нехватку памяти, лимиты воркеров, очередь соединений и состояние диска.
Измеряем время ответа и корректность заголовков, не увеличивая лимиты до подтверждения причины.
Тестируем проблемные маршруты, перезапуски и ожидаемую нагрузку, контролируем отсутствие новых 502 в журналах.
Диагностика шлюза
Код 502 возвращает прокси или веб-сервер, когда не получает корректный ответ от приложения. Проверяем цепочку запроса целиком, а не перезапускаем сервисы без установления причины.
Сверяем время ошибки в журналах Nginx, Apache и приложения. Проверяем адрес upstream, порт, сокет, DNS внутри инфраструктуры и состояние процесса, который должен обработать запрос.
Измеряем время ответа, очередь процессов, память, CPU и соединения с базой. Увеличение тайм-аута допустимо только после понимания, почему обработчик не успевает ответить.
Сравниваем главную, административный раздел, форму и тяжёлый запрос. Ошибка одного сценария указывает на код или данные; массовый сбой чаще связан с процессом приложения или окружением.
Если страница зависит от API, отделяем его отказ от работы сайта. Добавляем ограниченный тайм-аут и понятный ответ пользователю, чтобы один недоступный сервис не блокировал весь запрос.
После восстановления
Перезапуск может временно убрать симптом и стереть часть контекста. До действия сохраняем журналы и показатели ресурсов, после него проверяем, почему процесс остановился или перестал отвечать.
Контрольные страницы, форму, административный вход, фоновые задачи и повтор исходного тяжёлого запроса. В журналах не должно появляться новой серии 502 и аварийных перезапусков.
Если ошибка была периодической или зависела от нагрузки, настраиваем проверку доступности и ресурсов с уведомлением. Порог выбираем по фактическому поведению приложения, а не по случайному единичному пику.
Результат
Прокси подключается к правильному процессу, порту или сокету.
Приложение завершает запрос в согласованных ресурсных границах.
Разрыв можно быстро связать с конкретным компонентом и событием.
Порядок ремонта
Перезапуск может временно восстановить процесс, но скрыть причину. Перед вмешательством сохраняем журналы, метрики и состояние сервисов.
Определяем URL, время, частоту и слой, который сформировал код 502.
Проверяем компоненты по одному, прямой ответ upstream и доступность из контекста прокси.
Корректируем конфигурацию, процесс, сокет, зависимость или лимит в минимальной области.
Повторяем критические сценарии и наблюдаем журналы после публикации.
Не путать с 504
502 означает недопустимый ответ от upstream. 504 сообщает, что шлюз не получил своевременный ответ. На практике журналы и конфигурация нужны для точного различия.
Не присылайте пароли в форме. Доступы согласуем отдельно с минимальными правами; внешние расходы не подключаем без подтверждения.
Вопросы
Шлюз или прокси получил некорректный ответ от сервера, к которому обратился для выполнения запроса. Проверяется связь и состояние всей цепочки.
Нет. Nginx часто показывает код как прокси, но причиной может быть приложение, PHP-FPM, сокет, контейнер, неверный upstream или внешний сервис.
Только если подтверждено, что корректный upstream отвечает дольше лимита. Иначе это скрывает медленный код или перегрузку.
Проверяем ответы компонентов, проблемные URL, повторные запросы, журналы и поведение под ожидаемой нагрузкой.
Первый шаг
Пришлите URL, время и сведения об инфраструктуре. Определим вероятный разрыв и предложим проверяемый диагностический шаг.