Ошибка 504 Gateway Timeout возникает, когда сервер, выполняющий роль шлюза или прокси, не получает вовремя ответ от другого сервера. Обычно это происходит, если серверное приложение сайта работает медленно, перегружено или испытывает проблемы с подключением.
Если Вы посещаете сайт, попробуйте через некоторое время обновить страницу. Если Вы управляете сайтом, начните с проверки журналов сервера и приложения, чтобы выяснить, на каком этапе возникает задержка.
Вот семь практических способов найти и устранить причину ошибки.
Что вызывает ошибку 504 Gateway Timeout?
Многие сайты используют несколько серверов или сервисов для обработки запросов.
Например, браузер может подключаться к Nginx или CDN, которые затем перенаправляют запрос на сервер приложения.
Если приложение отвечает слишком долго, шлюз может вернуть ошибку 504 вместо запрошенной страницы.
Распространённые причины:
- Перегруженные или не отвечающие серверы приложений.
- Медленные запросы к базе данных или внешним API.
- Недостаток ресурсов CPU, оперативной памяти или рабочих процессов приложения.
- Проблемы с сетью между шлюзом и сервером приложения.
- Ограничения времени ожидания прокси или приложения.
- Неправильная настройка CDN или хостинговой инфраструктуры.
Ошибка 504 обычно связана с сервером, хотя проблемы с конкретным подключением иногда могут затрагивать отдельных посетителей.

1. Обновите страницу и проверьте доступность сайта
Если Вы просто посещаете сайт, немного подождите и обновите страницу.
Временная перегрузка сервера или прерванный запрос к серверному приложению могут исчезнуть без вмешательства.
Также можно попробовать другой браузер или сеть, чтобы проверить, связана ли проблема именно с Вашим подключением.
Если ошибка возникает у всех, разбираться в её причинах, как правило, потребуется владельцу сайта или хостинг-провайдеру.
Не отправляйте повторно платежи, заказы или формы. Операция на сервере могла завершиться, даже если шлюз не дождался ответа.
2. Проверьте журналы сервера и приложения
Если Вы управляете сервером, лучше всего начать с файлов журналов.
Для Nginx проверьте журнал ошибок:
sudo tail -n 50 /var/log/nginx/error.log
Ищите сообщения, похожие на следующее:
upstream timed out (110: Connection timed out)
Они указывают на то, что Nginx слишком долго ждал ответа от вышестоящего сервера.
Затем проверьте журналы приложения, чтобы выяснить, почему оно отвечало медленно.
Также можно проверить службу, управляемую systemd:
sudo journalctl -u myapp -n 50
Замените myapp фактическим именем Вашей службы.
Если Вы ещё не пользовались SSH, наше руководство по командам SSH для начинающих объясняет, как подключиться к серверу Linux.
3. Проверьте использование CPU, оперативной памяти и диска
Загруженному серверу может быть сложно обработать запрос до истечения времени ожидания шлюза.
Проверьте использование памяти:
free -h
Проверьте свободное место на диске:
df -h
Проверьте процессы:
top
Обратите внимание на постоянную нехватку ресурсов, исчерпание оперативной памяти, заполненные файловые системы и необычно загруженные процессы.
Сами по себе эти данные не доказывают причину истечения времени ожидания запроса, но могут помочь найти узкие места в производительности.
В нашем руководстве по основным командам Linux для управления сервером приведены дополнительные команды для проверки процессов, служб и журналов.
4. Изучите тайм-ауты Nginx и вышестоящего сервера
Если Nginx используется как обратный прокси, проверьте, успевает ли серверное приложение ответить до истечения установленных тайм-аутов.
Для серверных приложений, работающих по HTTP, конфигурация может содержать:
location / {
proxy_pass http://127.0.0.1:3000;
proxy_read_timeout 60s;
}
Параметр proxy_read_timeout определяет, как долго Nginx ждёт между последовательными операциями чтения ответа от серверного приложения, а не общую продолжительность всего запроса.
Прежде чем увеличивать это значение, проверьте приложение напрямую:
curl --max-time 15 -i http://127.0.0.1:3000/
Замените адрес фактическим адресом конечной точки Вашего приложения. Некоторые маршруты приложения могут требовать аутентификации или возвращать корректный ответ с кодом, отличным от HTTP 200.
Если само приложение работает медленно, увеличение тайм-аута Nginx может лишь скрыть основную проблему.
Если более длительное время ожидания действительно необходимо, проверьте также настройки тайм-аутов приложения. Для приложений на базе PHP-FPM и FastCGI в Nginx используются другие директивы, чем для серверных приложений, работающих через HTTP-прокси.
После изменения конфигурации проверьте её перед перезагрузкой Nginx:
sudo nginx -t
sudo systemctl reload nginx
Перезагружайте Nginx только в том случае, если проверка конфигурации прошла успешно.
5. Проверьте Cloudflare или Вашу CDN
Если Ваш сайт использует Cloudflare или другую сеть доставки контента, выясните, где возникает тайм-аут: на стороне CDN или исходного сервера.
Проверьте сведения об ошибке в Вашей CDN и сопоставьте их с журналами исходного сервера.
Ошибка 504 может исходить от вышестоящего сервиса за Вашим исходным сервером или возникать на другом этапе обработки запроса.
У Cloudflare есть собственные ограничения времени ожидания подключения и ответа, поэтому увеличение значения параметра Nginx не обязательно позволит обойти ограничение, установленное CDN.
Не отключайте функции безопасности или кэширования, пока не установите источник тайм-аута.
6. Изучите медленные запросы к базе данных и внешним API
Иногда веб-сервер работает исправно, но приложение ждёт ответа от другого сервиса.
Распространённые примеры:
- Запрос к базе данных выполняется слишком долго.
- Внешний API отвечает медленно.
- Исчерпаны пулы рабочих процессов приложения.
- Фоновые задачи конкурируют за ресурсы.
- Блокировки в базе данных задерживают обработку запросов.
Изучите журналы приложения, журналы медленных запросов и показатели работы сервисов, чтобы найти причину задержки.
Если причина в запросе к базе данных, проверьте индексы, планы выполнения запросов и использование соединений.
Для обращений к внешним API настройте разумные тайм-ауты и обработку ошибок. Если приложение это поддерживает, длительные задачи может быть лучше выполнять асинхронно.
7. Обратитесь к хостинг-провайдеру
Если устранить ошибку 504 Gateway Timeout не удаётся, обратитесь к хостинг-провайдеру и предоставьте собранные сведения.
Укажите затронутый домен, время появления проблемы, возникает ли она периодически, а также приложите относящиеся к ней сообщения из журналов.
Сообщите о недавних изменениях в настройках приложения, базы данных, CDN или обратного прокси.
Хостинг-провайдер может помочь разобраться с ограничениями ресурсов и проблемами инфраструктуры, к которой у Вас нет административного доступа.
Ошибки шлюза 502 и 504: в чём разница?
Эти ошибки связаны между собой, но указывают на разные проблемы при взаимодействии с вышестоящим сервером.
| Ошибка | Значение |
|---|---|
| 502 Bad Gateway | Шлюз получил некорректный ответ от вышестоящего сервера |
| 504 Gateway Timeout | Шлюз не получил необходимый ответ от вышестоящего сервера вовремя |
Например, если приложение неожиданно закрывает соединение, может возникнуть ошибка 502, а если отвечает слишком долго — ошибка 504.
Если Вы разбираетесь именно с некорректным ответом вышестоящего сервера, прочитайте наше руководство о том, как исправить ошибку 502 Bad Gateway в Nginx.
Как предотвратить ошибки 504 Gateway Timeout
Предотвратить каждый тайм-аут невозможно, но грамотное управление инфраструктурой помогает сократить их число.
- Отслеживайте время ответа приложения и использование ресурсов.
- Исследуйте медленные запросы к базе данных.
- Настройте подходящее кэширование для часто запрашиваемого контента.
- Установите разумные тайм-ауты для вышестоящих серверов и приложения.
- Следите за работой серверных сервисов и доступностью рабочих процессов.
- Проверяйте значительные изменения конфигурации перед их внедрением.
Увеличивать тайм-ауты следует обдуманно, а не в качестве первого шага при поиске причины ошибки.
Часто задаваемые вопросы
Да. HTTP 504 — это серверный код состояния, который означает, что шлюз или прокси не получил вовремя ответ от вышестоящего сервера.
Обычно нет. Очистка кэша браузера не устранит перегрузку серверного приложения или отсутствие ответа от него. Однако проверка в другом браузере или через другое подключение поможет исключить локальные проблемы.
Да. Временная перегрузка или медленный запрос к серверному приложению могут быстро перестать вызывать ошибку, а повторяющиеся тайм-ауты указывают на проблему, требующую расследования.
Да. На сайтах WordPress и в других приложениях ошибки 504 могут возникать, если запросы к базе данных, обработка PHP или работа вышестоящих сервисов занимают слишком много времени.
Только если приложению действительно требуется больше времени и это допускают остальные ограничения инфраструктуры. Сначала выясните, почему задерживается ответ серверного приложения.
Заключение
Ошибка 504 Gateway Timeout означает, что шлюз слишком долго ждал ответа от вышестоящего сервера.
Посетители могут проверить, носит ли проблема временный характер, а администраторам следует изучить журналы, ресурсы сервера, производительность приложения и настройки прокси.
Самый надёжный способ устранить ошибку — найти источник задержки, а не бездумно увеличивать тайм-ауты или перезапускать службы.