Ошибка 504 Gateway Time Out в nginx

Эта ошибка говорит, что время ожидания запроса вышло и nginx закрыл соединение. По умолчанию nginx дает 30 секунд для выполнения скрипта. После этого он считает, что скрипт «завис» и ждать его выполнения уже нет смысла.

Для сайта – выполнение 30 секунд это много. Но есть CRM, которые крутятся внутри локальной сети предприятия и могут работать дольше этого времени.


За время выполнения PHP-скрипта отвечает:

  1. настройки PHP, параметр max_execution_time;
  2. настройка 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

Теги: и

Комментарии




В качестве аватарки используется сервис - gravatar.com



IT-событие
Основание Adobe
Основание Adobe
Оглавление
  1. nginx как основной web-сервер
  2. nginx как прокси для Apache2
  3. Комментарии