Разбираемся, что означает ошибка 504, из-за чего она может возникнуть на сайте и что делать, чтобы её убрать.
Что внутри
- Что такое ошибка 504
- Как может выглядеть ошибка 504
- Почему возникает ошибка 504
- Как ошибка 504 влияет на SEO
- Как устранить ошибку 504
Что такое ошибка 504 Gateway Time-out
Ошибка 504 Gateway Time-out — это код состояния HTTP, один из стандартных ответов сервера на запрос браузера. Примеры других кодов: 403 Forbidden, 500 Internal Server Error или 503 Service Unavailable.
Сервер отправляет браузеру какой-то HTTP код каждый раз, когда вы открываете новую страницу или переходите по ссылке. Даже когда страница загружается без ошибок. В этом случае будет код HTTP 200 OK. Просто только в случае с ошибками код выводится на экран.
Конкретно этот код HTTP — 504 Gateway Time-out — значит, что в обработке запроса участвовало несколько серверов; чтобы его выполнить, один из серверов должен был получить ответ от другого, но не получил его в течение максимально допустимого времени ожидания.
Дополнительный сервер при этом может быть как реально отдельным физическим сервером — например, сервером провайдера CDN — так и сервисом, запущенным на одной машине с сайтом — например, связкой Nginx + Apache или Nginx + PHP-FPM.
Как может выглядеть ошибка 504 Gateway Time-out
Дизайн и текст страницы с 504 ошибкой будет отличаться в зависимости от разных факторов: операционной системы на сервере, панели управления и веб-сервера на хостинге, браузера, CMS или движка, на котором сделан сайт.
Также стандартную страницу ошибки можно оформить в общем дизайне сайта и написать на ней любой текст, не обязательно «504» или «Gateway Timeout». Вот несколько примеров.
Вот некоторые варианты текста на странице с 504 ошибкой, с которыми вы можете столкнуться на разных сайтах:
- 504
- Error 504
- Ошибка 504
- Connection error (504)
- 504 Gateway Time-out
- 504 — Ошибка сервера!
- Error 504 — Gateway Timeout
- 504. That’s an error. That’s all we know.
- This page is taking way too long to load.
- The page isn’t working — HTTP Error 504
- HTTP-шлюз не отвечает (код ошибки: 504)
Почему возникает ошибка 504 Gateway Time-out
Как мы уже выяснили, 504 ошибка означает, что запрос обрабатывают несколько серверов, один из них долго не отвечает другому, из-за чего соединение обрывается.
Дополнительный сервер может быть внешним — например, CDN — а может и частью вашей инфраструктуры — например, reverse proxy или сервером базы данных.
Вот популярные причины, по которым один сервер может не отвечать другому:
- скрипт завис или слишком долго выполняется;
- CDN не может связаться с основным сервером;
- резко выросла нагрузка на один из серверов.
Дело может быть и в чём-то другом, поэтому в любой непонятной ситуации смотрите логи.
Как 504 ошибка влияет на SEO
Если поисковый робот видит ошибку с кодом 5хх, когда заходит на страницу, он её покинет и через несколько часов пробует просканировать ещё раз в расчёте на то, что владелец сайта решит проблему. Если при повторном посещении ошибка не исчезнет, бот может исключить страницу из индекса.
Проверить, выпала ли страница из индекса, можно в Google Search Console. Для этого войдите в консоль и введите в строке поиска ссылку на страницу. Сервис проверит страницу и покажет её статус. Если увидите статус «URL нет в индексе Google», нажмите «Запросить индексирование», чтобы повторно добавить туда страницу.
Также при помощи Google Search Console вы можете своевременно обнаруживать ошибки. Для этого просто периодически проверяйте раздел «Покрытие» на главной странице панели в меню слева. В него записываются все ошибки на сайте.Подробнее на эту тему: Как добавить сайт в Google Search Console.
Как исправить ошибку 504 Gateway Time-out
Если вы столкнулись с ошибкой на чужом сайте, ваши варианты описаны в первых двух советах. Чтобы воспользоваться остальными советами, понадобится доступ на хостинг, где хранится сайт.
1. Перезагрузите страницу
Бывает такое, что 504 ошибка отображается в моменте: вы зашли на сервер, когда он был перегружен, но всё сразу же вернулось в норму и при повторной загрузке сайт уже загружается как обычно.
Попробуйте также зайти на сайт в другом браузере или очистить кэш в текущем, чтобы исключить сценарии, когда проблема решилась сама собой, но вы у себя в браузере видите копию страницы. Вообще, страницы с такими ошибками не кэшируются по умолчанию, но это могли изменить.
2. Проверьте настройки CDN
Ошибка 504 может возникать, если вы используете CDN. Чаще всего это происходит из-за того, что удалённый сервер провайдера CDN не дожидается ответа от сервера, на котором хранится ваш сайт. Например, если основной сервер перегружен, либо трафик с CDN блокируется: в настройках веб-сервера или файрвола.
Первое, что вы можете сделать, чтобы разобраться, — временно отключить CDN. Для этого можно добавить в файл hosts у себя на компьютере запись с IP-адресом вашего основного сервера, чтобы трафик шёл в обход CDN конкретно на вашем компьютере. Вот инструкция, как это сделать:
Если после отключения 504 ошибка по-прежнему возникает, значит дело не в CDN, а в какой-то проблеме на основном сервере. Попробуйте другие советы в статье, они как раз описывают популярные ситуации.
А если ошибка исчезла, скорее всего, дело в подключении CDN к вашему серверу. Проверьте файрвол основного сервера и убедитесь, что никакое правило не мешает трафику с CDN проходить на него. Либо как вариант поищите информацию о доступности CDN. Как правило у любого сервиса есть страница, где сообщают о любых проблемах с работоспособностью. Вот, например, такая страница с информацией о работе Cloudflare.
3. Проверьте параметры веб-сервера
Если вы используете Nginx в качестве прокси для Apache или в связке с PHP-FPM, ошибка 504 может возникнуть из-за слишком низкого максимально допустимого времени ожидания ответа на запрос в параметрах. Попробуйте увеличить этот параметр и проверьте, помогло ли это решить проблему с 504 ошибкой.
Чтобы попробовать решить проблему с PHP-FPM, добавьте несколько строк в блок настройки FastCGI в основном конфигурационном файле nginx.conf:
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
В нашем примере максимально допустимое время ожидания ответа — 300 секунд. Если нужно, можете ещё больше увеличить этот параметр. После этого не забудьте перезапустить Nginx.
Чтобы попробовать решить проблему с Nginx в роли прокси для Apache, добавьте такие строки в блок server внутри nginx.conf:
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
Здесь тоже, если нужно, выставьте значение больше, чем 600 секунд. А после сохранения изменений не забудьте перезагрузить сервер.
4. Оптимизируйте сайт
Сервер может слишком долго не отвечать, если находится под большой нагрузкой. Например, если на нём запущено слишком много процессов, зависает скрипт или нагрузку создаёт слишком большое количество тяжёлых запросов к базе данных. Каждая ситуация индивидуальна, нужно смотреть логи, чтобы найти причину ошибки.
Бывает, ресурсов начинает не хватать, потому что сайт стал привлекать больше посетителей, нагрузка стала выше. Тут либо переходить на более мощный хостинг, либо оптимизировать сайт: настроить кеширование, отключить лишние скрипты или изменить их, чтобы использовали меньше ресурсов.
Отдельный момент — чрезмерную нагрузку на сервер может создавать вредоносный трафик, например, DDoS-атака. От такого трафика придётся отбиваться, но необходимые действия будут сильно зависеть от ситуации. Поэтому, как только заметите подозрительную активность, обратитесь за помощью к вашему провайдеру хостинга. Если поддержки нет и вы не знаете, как отбить атаку, попробуйте подключить Cloudflare и включить там защиту от DDoS. Подробнее о том, как это сделать, читайте в нашей статье:
Как подключить сайт к Cloudflare
5. Отключите плагины
Если у вас сайт на WordPress, ошибка 504 Gateway Time-out может возникнуть из-за того, что плагины создают чрезмерную нагрузку на сервер. Ради эксперимента, временно отключите их и проверьте, исчезла ли ошибка.
Отключить плагины можно в панели управления хостингом. В панели cPanel, которую предоставляем у себя на хостинге мы и некоторые другие провайдеры, для этого нужно найти на главной странице блок «Файлы» и перейти в «Менеджер файлов».
В Менеджере файлов перейдите слева в корневую папку домена, откройте в ней папку wp-content и переименуйте папку plugins. Например, в plugins-off. После этого плагины на вашем сайте перестанут работать.
Корневая папка для основного домена на хостинге обычно называется public_html, а для дополнительного — так же, как и сам домен. Также эту папку можно посмотреть в разделе «Домены» на главной странице cPanel.
Если после отключения плагинов 504 ошибка исчезла, нужно только выяснить, какой конкретно плагин её вызвал. Для этого создайте новую папку plugins и по очереди перетаскивайте в неё папки плагинов из plugins-off, пока не узнаете, какой из них вызывает ошибку.
6. Проверьте логи
В этой статье описаны не все ситуации, в которых возникает 504 ошибка, а только наиболее популярные. В вашем случае дело может быть в чём-то другом. Поэтому, если советы в статье не помогли, проверьте логи сервера. Они помогут определить причину ошибки.
В зависимости от того, какой веб-сервер используется у вас на хостинге, стандартные пути к логам будут такими:
- /var/log/httpd/error_log или /var/log/apache2/error_log — для Apache;
- /usr/local/apache/logs/error_log — для Apache с установленной cPanel & WHM;
- /var/log/nginx/error_log — для Nginx.
Логи могут храниться и в другом месте. Например, разные панели управления хостингом часто переопределяют стандартный путь. Допустим, панель управления Webuzo, которую мы предоставляем бесплатно у себя на VPS, хранит логи по пути /usr/local/apps/apache/logs/vashdomen.err.
Доступ к общим логам будет только на VPS-хостинге или выделенном сервере. На виртуальном хостинге будет свой файл error_log. По умолчанию он создаётся в том же каталоге, где лежит скрипт, выполнение которого привело к 504 ошибке. Но разные CMS могут переопределять путь к этому файлу в другие папки.
Плюс в него попадают только ошибки PHP. Ошибки веб-сервера попадут в основные логи. Так что если у вас виртуальный хостинг и в логах пусто, свяжитесь с поддержкой провайдера и попросите их посмотреть основные логи. Пусть пришлют последние строки оттуда и помогут найти проблему.
Что делать, если советы не помогли
Скорее всего, у вас какая-то специфическая проблема. Обратитесь в службу поддержки вашего провайдера хостинга и попросите их помочь разобраться.
Если ваш хостинг-провайдер — мы, напишите нашей техподдержке на support@hostiq.ua. По возможности прикрепите к письму сообщения из логов, чтобы мы сразу могли начать разбираться.
Переезжайте к нам на хостинг
Если вам нужен новый тариф, переезжайте к нам. У нас круглосуточная поддержка, которая решает проблемы быстро и в любое время. Даже если вопрос возникнет ночью в выходной или в праздничный день.
Сотрудники нашей техподдержки возьмут всю работу на себя: проанализируют сайт у текущего провайдера, подберут подходящий тариф и обсудят с вами условия переноса. А когда договоритесь о деталях, бесплатно перенесут ваш сайт на HOSTiQ и проверят, чтобы он исправно работал.
Подробнее о переезде