Ошибка 504 Gateway Time Out в nginx
Эта ошибка говорит, что время ожидания запроса вышло и nginx закрыл соединение. По умолчанию nginx дает 30 секунд для выполнения скрипта. После этого он считает, что скрипт «завис» и ждать его выполнения уже нет смысла.
Для сайта – выполнение 30 секунд это много. Но есть CRM, которые крутятся внутри локальной сети предприятия и могут работать дольше этого времени.
За время выполнения PHP-скрипта отвечает:
- настройки PHP, параметр max_execution_time;
- настройка web-сервера.
Если в качестве web-сервера используется nginx, то изменить только в PHP мало. Нужно еще сделать это у самого nginx.
nginx как основной web-сервер
Редактируем конфигурационный файл сайта:
server {
...
location ~ \.php$ {
try_files $uri @404;
fastcgi_send_timeout 3600;
fastcgi_read_timeout 3600;
}
...
}
nginx как прокси для Apache2
Если кто-то еще использует связку Apache2+nginx, то нужно добавить в секцию server 4 команды:
server {
...
proxy_connect_timeout 3600;
proxy_send_timeout 3600;
proxy_read_timeout 3600;
send_timeout 3600;
...
}
После всех манипуляций не забываем перезапустить демон:
sudo nginx -s reload
Теги: сервер Linux и nginx