opened image

Ошибка 504 524 Gateway Timeout (решено)

Ошибка 504 524 Gateway Timeout — это код состояния HTTP, который означает, что один сервер не получил своевременный ответ от другого сервера, к которому он обращался, при попытке загрузить веб-страницы или выполнить другой запрос браузера.
 

Причины ошибок 504 524 Gateway Timeout


В большинстве случаев ошибка 504 или 524 Gateway Timeout означает, что запрос который отправлен на сервер занимает  времени чем установлено на сервере, или например на CloudFlare. Обычно это могут быть задания CRON, или любые другие запросы которые требуют большое количество времени на исполнение. 

Что касается ошибки 504 или 524 которую мы видим на Cloudflare, то это говорит об успешном подключении к исходному веб-серверу, но источник не предоставил HTTP ответ по истечении 100 секунд,  которое установлено по умолчанию. (Это ограничение установлено на бесплатном тарифе). Корпоративные клиенты могут увеличить время ожидания до 600 секунд.

Но в этой статье вы сможете узнать как можно настроить VPS сервер так что бы повысив лимиты, мы могли обойти ограничение ClodFlare в 100 секунд.


Если  у нас установлена панель ISP Manager, авторизуемся в панели под пользователем root, выбираем WWW-Домены, дале отмечаем галочкой нужный домен, и нажимаем Файлы конфигурации. 





Для сайтов на панели Vesta, конфиги можно найти по следующему пути:

 

Для правки nginx /home/admin/conf/web/******.nginx.ssl.conf

Для правки apache /home/admin/conf/web/******.httpd.ssl.conf

 


Для начала изменяем конфиг Apache, добавив туда директиву Timeout. Это необходимо сделать перед закрывающим тегом  </VirtualHost>. Как показано на иллюстрации.


 

<VirtualHost 127.0.0.1:8080>
...

TimeOut 1800  
</VirtualHost>


Далее изменяем конфиг nginx, добавив в блок  "location @fallback {...}" как показано на иллюстрации:



 

Если сайт работает в режиме Apache (CGI, FastCGI), то:

 

proxy_connect_timeout 1800;
proxy_send_timeout 1800;
proxy_read_timeout 1800;
send_timeout 1800;


Если сайт работает в режиме PHP-FPM, то:

 

fastcgi_connect_timeout 1800;
fastcgi_send_timeout 1800;
fastcgi_read_timeout 1800;
send_timeout 1800;

 

Если такой таймаут необходимо применить для всех сайтов на этом  сервере, что не рекомендуется, то данную конструкцию необходимо добавить в  блок http серверного конфига nginx. Размещение /etc/nginx/nginx.conf




После этого точно такие же таймауты необходимо добавить в конфигурационные директивы PHP max_input_time и max_execution_time. Это необходимо сделать в настройках выбранной версии PHP которая установлена на данный сайт.


Если у вас установлена панель ISP Manager, необходимо перейти "Настройки web-сервера", дале выбрать пункт "PHP", отметить галочкой нужную версию PHP и нажать "Расширенные настройки"

 

В поиске пишем max_input_time и max_execution_time и выставляем значение в 1800. Повторюсь, оно должно быть во всех конфигах одинаково!






Если у вас установлена Vesta, то необходимо перейти в меню Server и выбрать httpd или php-fpm.



Либо из консоли править файл /etc/php.ini и выставить  значение в 1800 для max_input_time и max_execution_time.

В случае если импорт товаров не проходит или 110: Connection timed out  fastcgi://unix:/var/www/php-fpm/2.sock

Добавляем следующие строки в location /

 

proxy_http_version 1.1;
proxy_set_header Connection "";

 
Так же можно добавить таймауты:

 

proxy_connect_timeout 1800;
proxy_send_timeout 1800;
proxy_read_timeout 1800;
send_timeout 1800;


После чего перезапускаем httpd и nginx, а так же php-fpm если он установлен.

Для Centos:
 

systemctl restart httpd
systemctl restart nginx
systemctl restart php-fpm



Для Ubuntu:

 

systemctl restart apache2
systemctl restart nginx
systemctl restart php-fpm


Запускаем задачу или нужный скрипт и наслаждаемся его работой.