Ответ
Код состояния 504 Gateway Timeout означает, что сервер, выступающий в роли шлюза или прокси (например, Nginx, API-гейтвей), не дождался ответа от вышестоящего сервера (upstream/backend) в отведенное время.
Основная причина: Таймаут соединения между прокси и бэкенд-сервисом.
Типичные сценарии:
- Бэкенд-приложение "зависло" на долгой операции (тяжелый запрос к БД, вычисления).
- Бэкенд-сервер перегружен и не успевает обработать запрос.
- Проблемы в сети между прокси и бэкендом.
- Значение
proxy_read_timeout(или аналог) в конфигурации прокси установлено слишком низким.
Пример настройки таймаута в Nginx:
location /api/ {
proxy_pass http://backend_service;
proxy_connect_timeout 5s; # Таймаут на установку соединения
proxy_read_timeout 30s; # Таймаут на чтение ответа от бэкенда
proxy_send_timeout 30s; # Таймаут на отправку запроса бэкенду
}
Диагностика:
- Проверить логи прокси-сервера (Nginx/Apache) на наличие
upstream timed out. - Проверить логи и метрики бэкенд-сервиса на предмет медленных операций или высокой нагрузки.
- Проанализировать производительность запросов к базе данных или внешним API.
- Увеличить
proxy_read_timeout, если операция действительно требует больше времени (но лучше оптимизировать сам запрос).