Коды состояния · код502Плохой шлюз

Что означает ответ 502 Плохой шлюз, кто виноват, что делать посетителю и что — владельцу сервера.

Открыть справочник на этом коде
Что происходит

Прокси не дозвонился до приложения

connect() failed (111: Connection refused) while connecting to upstream

nginx принял запрос и попытался передать его дальше — приложению, контейнеру, второму серверу, — но соединения не получил. Строка Connection refused означает, что по указанному адресу никто не слушает: процесс не запущен, упал или слушает другой порт либо сокет.

Код
Кто виноватОшибка сервера
Класс5xx Ошибка сервера
01

Что делать

Если это чужой сайт

Со стороны ничего не сделать: сайт запущен, но его внутренняя часть недоступна. Обычно это длится минуты — столько, сколько занимает перезапуск, — поэтому имеет смысл повторить чуть позже.

Если это ваш сервер

Проверьте три вещи по порядку: жив ли процесс приложения, на каком адресе он слушает и совпадает ли этот адрес с proxy_pass. Классические случаи — приложение упало после выкладки; порт занят прежним процессом, и новый поднялся на соседнем; в докере сервис доступен по имени контейнера, а в конфиге стоит 127.0.0.1. Если процесс жив и порт верный, а 502 остаётся — смотрите не сюда, а в 504: там речь про таймаут.

02

С чем путают

504Шлюз не дождался ответа

соединение установилось, но ответа не дождались: апстрим жив и медленный.

504
500Внутренняя ошибка сервера

приложение ответило — ответом об ошибке. Значит, оно работает, и дело в коде.

500
503Сервис недоступен

апстрима нет намеренно: обслуживание или выключенный балансировщиком узел.

503
03

Как проверить

ss -lptn 'sport = :3000'

слушает ли кто-нибудь тот порт, в который целится proxy_pass

curl -sI http://127.0.0.1:3000/ | head -1

ответит ли апстрим напрямую, в обход прокси

Найти другой код

В справочнике шестьдесят четыре кода с поиском по номеру, названию и смыслу — и разбор частых пар вроде 401 и 403.

Открыть справочник на этом кодеВсе коды

Обновлено

«» добавлен в избранное