Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

HTTP_504_GATEWAY_TIMEOUT Linux / DevOps

Траблшутинг Nginx 504 Gateway Timeout: proxy_read_timeout и fastcgi

Обновлено: 21.08.2026
  • Nginx возвращает клиенту HTTP статус 504 Gateway Time-out.
  • В error.log Nginx фиксируется запись: upstream timed out (110: Connection timed out) while reading response header from upstream.
  • Тяжелые SQL-запросы, выгрузки отчетов или сторонние HTTP-вызовы в бэкенде выполняются дольше 60 секунд (тайм-аут по умолчанию).

1. Анализ логов ошибок Nginx

tail -n 50 /var/log/nginx/error.log | grep -E "504|timed out"

2. Тюнинг таймаутов для Proxy Pass (HTTP-бэкенды: Node.js, Go, Python)

Добавьте параметры в блок location или http:

location /api/ {
    proxy_pass http://api_backend;
    proxy_connect_timeout 60s;
    proxy_send_timeout 300s;
    proxy_read_timeout 300s;
}

3. Тюнинг таймаутов для FastCGI (PHP-FPM)

location ~ \.php$ {
    include fastcgi_params;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    
    fastcgi_connect_timeout 60s;
    fastcgi_send_timeout 300s;
    fastcgi_read_timeout 300s;
}

4. Синхронизация лимитов в PHP-FPM / App Server

Увеличение таймаута в Nginx без изменения настроек бэкенда приведет к ошибке 502. В /etc/php/8.2/fpm/pool.d/www.conf:

request_terminate_timeout = 300s

В /etc/php/8.2/fpm/php.ini:

max_execution_time = 300

5. Применение изменений

nginx -t && systemctl reload nginx
systemctl restart php8.2-fpm
💡 Практика специалистов: Если 504 возникает массово на всех эндпоинтах, проверьте пул воркеров PHP-FPM/Gunicorn. При исчерпании свободных воркеров (max_children reached) новые запросы встают в очередь и отваливаются по таймауту сокета.

Частые вопросы (FAQ)

В чем разница между ошибками 502 Bad Gateway и 504 Gateway Timeout?

502 указывает, что бэкенд не работает, сбросил соединение или вернул некорректный ответ (TCP RST / ECONNREFUSED). 504 означает, что бэкенд принял запрос, но не успел отправить ответ за время, отведенное директивой proxy_read_timeout / fastcgi_read_timeout.

Является ли увеличение proxy_read_timeout лучшим решением?

Нет, это временная мера. Длительные операции (генерация PDF, экспорт БД) необходимо переносить в асинхронные очереди фоновых задач (Celery, RabbitMQ, Redis Queue).

Полезные материалы
Рекомендуем