Коды состояния · код504Шлюз не дождался ответа

Что означает ответ 504 Шлюз не дождался ответа, кто виноват, что делать посетителю и что — владельцу сервера.

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

Страница грузится долго и обрывается

upstream timed out (110: Connection timed out) while reading response header from upstream

Апстрим жив и соединение принял, но ответ не пришёл за отведённое время — по умолчанию у nginx это шестьдесят секунд. Обычно за этим стоит один медленный шаг: тяжёлый запрос в базу, поход во внешний API без таймаута или отчёт, который считается синхронно.

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

Что делать

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

Повторите позже: запрос дошёл, но сервер не успел ответить. Если 504 повторяется на одной и той же тяжёлой странице — например, на большом отчёте, — дело не в вашем соединении, и ждать дольше бесполезно.

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

Не поднимайте proxy_read_timeout первым делом: это прячет симптом и оставляет запрос висеть дольше, занимая соединение. Сначала найдите медленный шаг — в логе приложения по времени ответа, — и решите, честно ли он долгий. Если да, такую работу выносят в фон и отдают результат отдельно; лимит поднимают только под неё, а не для всего сервера.

02

С чем путают

502Плохой шлюз

соединения не было вовсе: апстрим не запущен или слушает другой адрес.

502
408Истекло время запроса

здесь наоборот — это клиент не дослал запрос вовремя.

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

сервер отказался сразу, а не молчал до истечения таймаута.

503
03

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

curl -o /dev/null -s -w '%{time_total}\n' http://127.0.0.1:3000/report

сколько секунд апстрим отвечает на самом деле, без прокси

grep 'upstream timed out' /var/log/nginx/error.log | tail -n 20

какие адреса упираются в таймаут чаще всего

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

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

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

Обновлено

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