Ошибка 504 Gateway Timeout — шлюз не отвечает

  • Обновлено
  • Чтение ≈ 3 минуты

Краткий ответ

Ошибка 504 означает, что промежуточный сервер (прокси, CDN) не дождался ответа от основного. Для посетителя — повторить позже; владельцу — проверить таймауты и скорость бэкенда.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Для посетителя
  5. Для владельца: nginx и PHP-FPM
  6. CDN и балансировщики
  7. Как найти медленный запрос на сервере

#Что означает ошибка

504
Ошибка 504 Gateway Timeout

Ошибка 504 Gateway Timeout означает, что промежуточный сервер (прокси, CDN, балансировщик) не дождался ответа от основного сервера. Обычно проблема не на вашей стороне, но проверить можно несколько вещей.

Если вы владелец сайта, решение лежит на серверной стороне.

Ошибка 504 означает, что промежуточный сервер (прокси, CDN) не дождался ответа от основного. Для посетителя — повторить позже; владельцу — проверить таймауты и скорость бэкенда.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Медленный бэкендСкрипт.Долго.Оптимизируйте.
Короткие таймаутыПрокси.Обрыв.Увеличьте.
ПерегрузкаНагрузка.Часто.Мониторинг.
Проблемы сетиСеть.Между серверами.Проверьте.

#Пошаговое решение

  1. Обновите страницуНажмите Ctrl+F5, чтобы запросить страницу заново без обычного кэша (на некоторых системах сочетание отличается). Если ошибка осталась, откройте страницу в другом браузере или приватном окне и сравните результат.
  2. Проверьте с другой сетиЕсли сейчас используется Wi-Fi, временно переключите телефон на мобильный интернет и откройте тот же адрес. Если есть второй компьютер или телефон, проверьте страницу и на нём. Ошибка только в одной сети указывает на роутер, DNS или ограничения сети; ошибка на всех устройствах и сетях — скорее на стороне сайта.
  3. Проверьте статус сервисаОткройте официальную страницу состояния соответствующего сервиса (если она есть) и проверьте сообщения о текущих сбоях. Сравните работу сервиса в приложении и браузере; при общей аварии дождитесь восстановления, не сбрасывая устройство.
  4. Владельцу: проверьте логиАдминистратору: найдите в журнале доступа и ошибок веб-сервера запись, соответствующую точному времени и URL сбоя. На системах с systemd можно начать с sudo journalctl -u nginx --since "15 minutes ago" (если nginx работает как служба); для файловых логов используйте путь, указанный в конфигурации access_log/error_log. Ищите сообщения подключения к upstream, тайм-ауты и отказ приложения; не меняйте лимиты без подтверждённой причины. Посетителю достаточно записать код и время и обратиться к владельцу.
  5. Увеличьте тайм-ауты и оптимизируйте запросыАдминистратору: в журналах nginx, прокси и приложения сопоставьте время начала запроса с моментом обрыва. Если подтверждён тайм-аут, сначала найдите медленный запрос/блокировку в приложении и базе данных; увеличение proxy_read_timeout/fastcgi_read_timeout без устранения причины лишь отложит сбой. Перед правкой сохраните конфигурацию, выполните nginx -t и применяйте её только после успешной проверки. Посетителю эти действия не нужны.

#Для посетителя

Обновите страницу через минуту, откройте сайт с другого устройства и сети. Проверьте статус на downdetector.com или isitdownrightnow.com. Очистите кэш и отключите VPN. Если сайт не открывается только у вас, смените DNS на 1.1.1.1.

#Для владельца: nginx и PHP-FPM

Увеличьте тайм-ауты: proxy_read_timeout 120s; или fastcgi_read_timeout 120s; в nginx и request_terminate_timeout в PHP-FPM. Проверьте нагрузку top/htop и логи /var/log/nginx/error.log. Медленные запросы ищите в slow log PHP-FPM и MySQL.

#CDN и балансировщики

В Cloudflare 504 приходит, когда исходный сервер отвечает дольше 100 секунд: оптимизируйте длительные запросы или выносите их в очередь. Проверьте здоровье бэкендов на балансировщике и тайм-аут idle timeout. Включите кэширование статики.

Linux · Терминал (Bash)Команда
Последние ошибки nginx и время ответа сайта.
tail -n 50 /var/log/nginx/error.log
curl -o /dev/null -s -w "%{http_code} %{time_total}\n" https://example.com

#Как найти медленный запрос на сервере

Включите логирование медленных запросов PHP-FPM: в www.conf задайте request_slowlog_timeout = 10s и slowlog = /var/log/php-fpm/slow.log. Для MySQL включите slow_query_log = 1 и long_query_time = 2, затем анализируйте файл через mysqldumpslow -s t /var/log/mysql/slow.log. В nginx добавьте в формат лога $request_time $upstream_response_time, чтобы сопоставить медленные адреса. Часто причиной служит один тяжёлый отчёт, парсер или неоптимальный индекс, а не нехватка мощности.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.