Hosting Серверы 502 bad gateway Nginx

Ошибка 502 Bad Gateway: причины и исправление

Что означает ошибка 502, что может сделать посетитель и как владельцу сайта проверить CDN, прокси, веб-сервер и приложение без слепых перезапусков.

Наталья Соколова
Наталья Соколова

Self-hosted проекты, безопасность и почта

Она объясняет почтовый хостинг, базовую безопасность, VPS для личных проектов и разумные границы самостоятельности.

6 мин чтения

Ошибка 502 Bad Gateway означает, что сервер-посредник получил некорректный ответ от следующего сервера в цепочке. Посетителю стоит проверить другие страницы и повторить запрос позже. Владельцу сайта нужно зафиксировать время и URL, затем сопоставить журналы прокси, веб-сервера и приложения до перезапуска служб.

Что означает код 502

По стандарту HTTP код 502 возвращает шлюз или прокси, когда получает некорректный ответ от сервера, к которому обратился дальше. Браузер видит последнюю точку цепочки, но надпись NGINX или Cloudflare не доказывает, где возник сбой.

Типичная цепочка выглядит так: посетитель обращается к CDN или обратному прокси, тот — к веб-серверу, а веб-сервер — к приложению. Любое звено может быть доступно само по себе, но не получать ожидаемый ответ от следующего.

Не путайте соседние коды:

КодПрактический смыслПервый вопрос
502Прокси получил некорректный ответКто был следующим сервером?
503Сервис сейчас не готов обработать запросЕсть ли перегрузка или обслуживание?
504Прокси не дождался ответа вовремяГде запрос задержался?
521–526Специальные ошибки некоторых CDNЧто говорит документация конкретного CDN?

Если вы посетитель сайта

Посетитель не может исправить приложение или прокси. Сначала откройте другую страницу того же сайта и проверьте, повторяется ли ошибка. Затем подождите и обновите страницу один раз.

Не отправляйте повторно форму оплаты, заказ или загрузку файла без проверки результата. Сервер мог принять действие, а ответ потерялся по пути. Повторный POST-запрос способен создать дубль, даже если браузер показал ошибку.

Если сбой продолжается, передайте владельцу:

  • точный адрес страницы;
  • время с часовым поясом;
  • снимок страницы ошибки;
  • действие перед ошибкой;
  • работает ли сайт через другую сеть.

Очистка кэша браузера редко устраняет серверный 502. VPN, смена DNS и переустановка браузера тоже не должны быть первым шагом, если ошибка воспроизводится у других пользователей.

Если вы владелец: сначала зафиксируйте факт

Не начинайте с перезапуска всех служб. Он стирает часть оперативных признаков, обрывает запросы и иногда временно маскирует причину. Сначала ограничение, потом наблюдение, затем изменение.

Зафиксируйте время на сервере и ответ проблемного URL:

date -Is
curl -sS -D - -o /dev/null https://example.com/problem-path

Сохраните заголовки ответа, идентификатор запроса CDN, если он есть, и несколько строк журналов вокруг события. Не публикуйте токены, cookie, IP клиентов и полные строки с персональными данными в обращении.

Определите масштаб: одна страница, один домен, один сервер или весь проект. Если статические файлы открываются, а динамические страницы дают 502, проверяйте связь с приложением раньше DNS.

Локализуйте сбой по цепочке

Двигайтесь от видимого прокси к следующему звену. Не меняйте сразу тайм-ауты, сокеты и пул процессов: при нескольких одновременных правках результат нельзя связать с причиной.

НаблюдениеВероятная зона проверкиЧто собрать
CDN показывает 502, origin отвечает нормально напрямуюCDN, TLS или путь до originЗаголовки, trace, время, origin-тест
Прокси не соединяется с локальным портомПриложение, сокет, порт, праваСтатус процесса и error log
Соединение есть, ответ обрываетсяПриложение или протоколЛоги обоих звеньев по времени
Ошибка только под нагрузкойРесурсы, очереди, лимиты соединенийМетрики до и во время сбоя
Ошибка после конфигурационного измененияНовый конфиг или адрес upstreamdiff, тест синтаксиса, план отката

Если используется CDN, сравните публичный ответ с ответом origin только из разрешённой диагностической точки. Не открывайте origin всему интернету ради теста и не отключайте защиту без окна и способа вернуть настройки.

Проверка NGINX

В error log NGINX ищите сообщения рядом с временем запроса: отказ соединения, тайм-аут, некорректный заголовок или отсутствие доступного upstream. Затем сверьте адрес и порт из сообщения с фактическим процессом приложения.

Проверка конфигурации безопаснее перезапуска:

nginx -t

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

Перед применением изменения сохраните diff и команду возврата к предыдущему файлу. Только после успешной проверки конфигурации используйте штатную плавную перезагрузку, принятую в вашей системе. Не завершайте worker-процессы вручную и не запускайте kill по совпадению имени.

Проверка Apache и приложения

Apache с mod_proxy тоже может быть шлюзом и вернуть 502 после проблемного ответа backend. Проверьте error log Apache, настройки ProxyPass и реальный адрес приложения. Пользовательская страница ошибки через ProxyErrorOverride меняет оформление, но не устраняет причину.

Для проверки синтаксиса используйте штатный интерфейс:

apachectl configtest

Если исправление действительно требует перечитать конфигурацию, сначала подтвердите Syntax OK и подготовьте откат. Apache поддерживает graceful-перезапуск, который сохраняет текущие соединения лучше немедленного restart, но и он не заменяет проверку приложения.

У приложения проверьте состояние процесса, последние ошибки, очередь запросов, соединения с базой и доступность нужного сокета. Не удаляйте сокет и не увеличивайте лимиты вслепую: это может добавить второй сбой.

Когда причина в ресурсах

502 часто появляется рядом с исчерпанием памяти, аварийным завершением процесса, нехваткой workers или соединений. Но один высокий график CPU ещё не доказывает причинность. Сопоставьте метрики с точным временем и журналом приложения.

Проверьте:

  • был ли процесс приложения жив;
  • слушал ли ожидаемый порт или сокет;
  • хватало ли памяти без аварийного завершения;
  • не заполнился ли диск с журналами или временными файлами;
  • не исчерпан ли пул соединений к базе;
  • завершались ли запросы до тайм-аута прокси.

Увеличение тайм-аута полезно только для ожидаемо долгой операции. Если приложение зависло или делает неограниченный запрос, больший тайм-аут просто заставит посетителя ждать дольше.

CDN и внешний прокси

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

При инфраструктуре через Cloudflare, Yandex Cloud, Selectel, Beget или Timeweb проверьте статус площадки и панель проекта. Ссылки ведут на страницы провайдеров HostScout и не означают одинаковую архитектуру у всех услуг.

В обращение передавайте минимальный воспроизводимый набор: URL, время, идентификатор запроса, регион, ответ исходного сервера и факт недавних изменений. Это быстрее, чем сообщение сайт не работает без временной привязки.

Чек-лист

  • Зафиксируйте URL, время с часовым поясом, заголовки ответа и масштаб ошибки.
  • Определите, какое звено вернуло 502 и какой сервер был для него следующим.
  • Сопоставьте error log прокси с журналом приложения по одному запросу.
  • Проверьте конфигурацию штатной командой и подготовьте откат до её применения.
  • После исправления повторите запрос и убедитесь, что связанная операция не выполнилась дважды.

Вопросы и ответы

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

Ошибка 502 находится на моём компьютере?
Обычно нет. Код возвращает сервер-посредник. Посетитель может проверить другую страницу и сеть, но исправлять нужно серверную цепочку.
Нужно ли сразу перезапускать NGINX?
Нет. Сначала сохраните время, ответ и журналы, затем проверьте nginx -t и доступность upstream. Перезапуск без диагноза может скрыть причину.
Чем 502 отличается от 504?
502 означает некорректный ответ следующего сервера, а 504 — что шлюз не дождался ответа вовремя. Зона проверки может пересекаться, но наблюдение разное.
Поможет ли увеличение тайм-аута?
Только если операция штатно длится дольше текущего лимита. При падении процесса, неверном порте или зависании увеличение тайм-аута не устраняет причину.

Что считать исправлением

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

Статью подготовили

Наталья Соколова
Наталья Соколова

Self-hosted проекты, безопасность и почта

Она объясняет почтовый хостинг, базовую безопасность, VPS для личных проектов и разумные границы самостоятельности.

Проверка фактов

HostScout editorial

Статьи по теме

Ошибка 403 Forbidden: причины и исправление

Ошибка 403 Forbidden: найдите источник запрета по журналам, проверьте индексный файл, права, правила Nginx или Apache и блокировку IP.

8 мин чтения

Что такое CDN и как работает доставка контента

Разбираем путь запроса через CDN: DNS, edge, origin, кэш, TLS и очистку. Когда сеть ускоряет сайт, а какие проблемы она не решает.

6 мин чтения

Фотохостинг: где хранить и делиться фото

Разбираем, когда нужен публичный фотохостинг, медиатека сайта или объектное хранилище, как настроить доступ и не потерять изображения.

6 мин чтения

Пробный период VPS: тест перед покупкой

Пробный период VPS: как проверить сервер до оплаты, читать условия возврата, тестировать сеть, диск, CPU и поддержку без лишнего риска.

5 мин чтения

Хостинг для Telegram и Discord бота

Хостинг для Telegram и Discord бота: как выбрать VPS, настроить автозапуск, не переплатить за ресурсы и не потерять процесс ночью.

4 мин чтения

Cloudflare: DNS, CDN и защита сайта

Cloudflare для сайта: как подключить DNS, включить CDN и защиту, не сломать почту, SSL, WAF и доступ из России при миграции.

6 мин чтения