HTTPQUERY
Русский

502 Bad Gateway

Применение

Код состояния 502 Bad Gateway означает, что сервер выступает в роли прокси или шлюза для вышестоящего сервера. После пересылки HTTP-запроса вышестоящий сервер вернул недопустимый ответ. Время на устранение этой проблемы непредсказуемо.

Когда сервер-источник возвращает ошибочный код состояния HTTP, ожидается, что тот же код состояния и связанные с ним сведения будут переданы клиенту для наиболее точного описания проблемы.

Когда прокси вообще не получает ответа от вышестоящего сервера, уместнее код состояния 504 Gateway Timeout.

Примечание

502 Bad Gateway означает, что прокси получил от бэкенда недопустимый ответ. Бэкенд ответил, но ответ оказался некорректным или неожиданным. 504 Gateway Timeout означает, что бэкенд вообще не ответил в пределах тайм-аута. 502 указывает на сбой бэкенда или ошибку протокола, тогда как 504 указывает на медленный или недоступный бэкенд. Ни один из этих кодов не означает, что клиент сделал что-то неправильно.

Влияние на SEO

Googlebot воспринимает ошибки 5xx как сигнал временно снизить скорость сканирования по всему сайту. Ранее проиндексированные URL сначала сохраняются, но длительный простой приводит к тому, что Google удаляет их из индекса. Любое содержимое, возвращённое с ответом 502, игнорируется. В этом отношении Google обрабатывает 500, 502 и 503 одинаково. Ошибка 5xx на файле robots.txt гораздо серьёзнее, даже если все остальные страницы сайта возвращают 200. Google останавливает сканирование на срок до 12 часов, затем до 30 дней опирается на кэшированную копию. Если ошибка сохраняется, Google полностью деиндексирует сайт. Bingbot также расценивает ответы 5xx как сбои сканирования. Постоянные ошибки 5xx препятствуют индексации в Bing.

Пример

Клиент запрашивает ресурс, и сервер отвечает кодом состояния 502 Bad Gateway, потому что вышестоящий сервер вернул недопустимый ответ.

Запрос

GET /news HTTP/1.1
Host: example.com

Ответ

HTTP/1.1 502 Bad Gateway
Content-Type: text/html; charset=UTF-8
Content-Length: 134

<html>
  <head>
    <title>Bad Gateway</title>
  </head>
  <body>
    <p>The server is unreachable at this time.</p>
  </body>
</html>

Как исправить

Сначала проверьте /var/log/nginx/error.log или соответствующий журнал ошибок прокси. Сообщение в журнале указывает на характер сбоя вышестоящего сервера: отказ в соединении, преждевременно закрытое соединение или недопустимый заголовок.

Распространённые первопричины и их устранение:

В конфигурациях обратного прокси Apache проверьте директивы ProxyPass/ProxyPassReverse и убедитесь, что mod_proxy и mod_proxy_http включены. Перед перезапуском выполните apachectl configtest.

После внесения исправлений выполните nginx -t для проверки конфигурации, затем перезагрузите её.

Примеры кода

.NET

HttpStatusCode.BadGateway

Rust

http::StatusCode::BAD_GATEWAY

Rails

:bad_gateway

Go

http.StatusBadGateway

Symfony

Response::HTTP_BAD_GATEWAY

Python3.5+

http.HTTPStatus.BAD_GATEWAY

Java

java.net.HttpURLConnection.HTTP_BAD_GATEWAY

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_BAD_GATEWAY

Angular

@angular/common/http/HttpStatusCode.BadGateway