504 gateway time-out nginx

<html> 
<head>
    <title>504 Gateway Time-out</title>
</head> 
<body bgcolor="white"> 
    <center><h1>504 Gateway Time-out</h1></center>
    <hr>
    <center>nginx</center> 
</body> 
</html> 
<!-- a padding to disable MSIE and Chrome friendly error page --> 
<!-- a padding to disable MSIE and Chrome friendly error page --> 
<!-- a padding to disable MSIE and Chrome friendly error page --> 
<!-- a padding to disable MSIE and Chrome friendly error page --> 
<!-- a padding to disable MSIE and Chrome friendly error page --> 
<!-- a padding to disable MSIE and Chrome friendly error page -->

Когда Nginx не получает ответ за выделенное время происходит ошибка 504 gateway time-out (Время вышло). Есть 2 основных случая, когда это происходит.

Nginx обслуживает другой web сервер

Наиболее распростанена связка с Apache. Чтобы увеличить время ожидания при проксировании, необходимо изменить следующие параметры:

server {
...
    proxy_connect_timeout 300;
    proxy_send_timeout    300;
    proxy_read_timeout    300;
    send_timeout          300;
...
}

Время ожидания будет равно 300 секундам.

Nginx обслуживает PHP-FPM

В это случае причиной является медленные PHP скрипты. Возможно это банальные ошибки или причина просто в "тяжёлой" операции или обращении к другому сайту, например за обновлениями. В любом случае, Nginx будет отдавать 504 ошибку когда он не дожидается ответа в течение установленного времени. Чтобы увеличить время ожидания следует изменить такие параметры:

location ~ \.php$ {
...
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
}

После изменение настроек, проверямся и перезагружаем nginx.

sudo nginx -t
sudo systemctl reload nginx

Похожие записи

Руководство по Markdown

Markdown - облегчённый язык разметки, созданный с целью написания максимально читаемого и удобного для правки текста, но пригодного для преобразования HTML и другие языки публикаций.

Как заблокировать обновление пакета в Ubuntu?

Иногда необходимо запретить обновление какого-нибудь пакет из нестабильного репозитория. Для этого есть 2 решения: грубое - отключить репозитарий, элегантное - заморозить обновление отдельного пакета.

Команда, чтобы заблокировать обновление пакета:

sudo apt-mark hold имя_пакета

Команда, чтобы разблокировать обновление пакета:

sudo apt-mark unhold имя_пакета
18 октября 2017 г. в Linux