#Что означает сообщение
504
504 Gateway Timeout означает, что Nginx не дождался ответа от вышестоящего приложения в установленное время. Это не всегда «сломанный Nginx» — PHP-FPM, база данных или сетевой сервис могут быть заняты.
#Как отличить причины
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Долгий скрипт | Сравните момент появления признака «Долгий скрипт» с тем, когда ранее работала нужная функция. Важно сопоставить проверку с исходным симптомом, а не с догадкой. | Исправляйте только подтверждённый фактор «Долгий скрипт», сохраняя прежние настройки. Для проверки результата повторите только прежнее действие. |
| Таймаут | Сравните результат на другом подключении и проверьте, получается ли адрес и ответ нужного сервиса. Учитывайте версию Nginx и условия сбоя. | Для случая «Nginx: 504 Gateway Timeout» корректируйте только подтверждённую сетевую настройку; при корпоративных подключениях согласуйте изменение VPN, DNS или правил межсетевого экрана. Изменения вносите по одному, с возможностью возврата. |
| База | При диагностике «Nginx: 504 Gateway Timeout» уточните, какой файл, каталог или запись вызывает отказ, и сравните время её изменения с началом ошибки. Учитывайте версию Nginx и условия сбоя. | Для случая «Nginx: 504 Gateway Timeout» исправляйте целевой файл или запись и оставляйте исходник на случай отката. Для проверки результата повторите только прежнее действие. |
| Перегрузка | Сравните момент появления признака «Перегрузка» с тем, когда ранее работала нужная функция. Учитывайте версию Nginx и условия сбоя. | Исправляйте только подтверждённый фактор «Перегрузка», сохраняя прежние настройки. Изменения вносите по одному, с возможностью возврата. |
#Пошаговое решение
- Зафиксируйте ошибку и проверьте условияОткройте страницу с ошибкой 504 и запишите адрес, точное время и действие, после которого она возникает. Сравните её с быстрыми страницами того же сайта: если таймаут только при импорте или поиске, вероятна медленная задача приложения; если на всём сайте, проверьте доступность серверной части.
- Выполните основную проверку и исправлениеПо SSH администратор выполняет
sudo tail -n 100 /var/log/nginx/error.logи ищет для этого времени сообщениеupstream timed outс адресом upstream. Затем проверьте журнал того приложения или PHP-FPM, к которому обращается Nginx. 504 не означает автоматом неисправность самого Nginx. - Исключите другие подтверждённые причиныПроверьте состояние соответствующей службы и её нагрузку: для PHP-FPM — реальное имя пула, доступную память, очередь запросов и признаки
pm.max_children; для другого приложения — его собственные журналы. Отдельно выясните, не ждёт ли код медленный SQL, DNS, сетевой API или внешнюю систему. - Проверьте, действительно ли проблема решенаИсправляйте причину медленной операции либо переносите её в фоновую задачу. Изменять
fastcgi_read_timeout/proxy_read_timeoutможно лишь после оценки нужной длительности, проверки конфигурацииnginx -tи плана отката; бесконечно увеличивать таймаут нельзя. Повторите прежний запрос и проверьте время ответа и журналы.
#Что важно перед исправлением
Не увеличивайте таймауты бесконечно: зависшие обработчики начнут занимать ресурсы ещё дольше. Не перезапускайте все службы боевого сервера без необходимости.