Ошибка 504 Gateway Time-out в Nginx

Ошибка 504 gateway time-out возникает, когда Nginx не может достаточно долго получить ответ от какого-либо сервиса. Например от PHP-FPM.

Nginx и PHP-FPM

Наиболее частая причина такой ошибки — это совместная работа Nginx и PHP-FPM. В случае, если есть очень медленные PHP скрипты, Nginx будет отдавать 504 ошибку когда он не дожидается ответа в течение 30 секунд (по умолчанию).

Чтобы избавиться от этой ошибки, попробуйте поднять время ожидания:
location ~ \.php$ {
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 300;
}

# В этом случае Nginx будет ждать 300 секунд (в 10 раз больше стандартного значения)

Проксирование

Gateway time-out также может возникать, когда Nginx используется как прокси-сервер. Например, при работе с Apache. Для того, чтобы избежать проблем, необходимо настроить параметры времени ожидания при проксировании:
server {
...
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
...
}

# Nginx будет ждать ответ 600 секунд от проксируемого сервиса

Не забывайте перезапускать Nginx после изменения настроек:

nginx -s reload

Важно понимать, что очень желательно избавляться от медленных скриптов. Решение с настройками времени ожидания может перестать работать при увеличении нагрузки.


Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Unlix © Все права защищены 2022

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!