Розбираємося, що означає помилка 504, через що вона може виникнути на сайті і що робити, щоб її прибрати.

Що всередині

  1. Що таке помилка 504
  2. Як може виглядати помилка 504
  3. Чому виникає помилка 504
  4. Як помилка 504 впливає на SEO
  5. Як усунути помилку 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 is not working – HTTP Error 504
  • HTTP-шлюз не відповідає (код помилки: 504)

Чому виникає помилка 504 Gateway Time-out

Як ми вже з’ясували, 504 помилка означає, що запит обробляють кілька серверів, один з них довго не відповідає іншому, через що з’єднання обривається.

Додатковий сервер може бути зовнішнім — наприклад, CDN — а може і частиною вашої інфраструктури — наприклад, reverse proxy або сервером бази даних.

Ось популярні причини, за якими один сервер може не відповідати іншому:

  • скрипт завис або занадто довго виконується;
  • CDN не може зв’язатися з основним сервером;
  • різко зросло навантаження на один з серверів.

Справа може бути і в чомусь іншому, тому в будь-який незрозумілій ситуації дивіться логи.

Як 504 помилка впливає на SEO

Якщо пошуковий робот бачить помилку з кодом 5хх, коли заходить на сторінку, він її покине і через декілька годин пробує просканувати ще раз в розрахунку на те, що власник сайту вирішить проблему. Якщо при повторному відвідуванні помилка не зникне, бот може виключити сторінку з індексу.

Перевірити, чи випала сторінка з індексу, можна в Google Search Console. Для цього увійдіть до консолі та введіть у рядку пошуку URL потрібної сторінки. Сервіс перевірить сторінку і покаже її статус. Якщо побачите статус «URL немає в індексі Google», натисніть «Запросити індексування», щоб повторно додати туди сторінку.

Також за допомогою Google Search Console ви можете своєчасно виявляти помилки. Для цього просто періодично перевіряйте розділ «Покриття» на головній сторінці панелі в меню зліва. У нього записуються всі помилки на сайті. Докладніше на цю тему: Як додати сайт в Google Search Console.

Як виправити помилку 504 Gateway Time-out

Якщо ви зіткнулися з помилкою на чужому сайті, ваші варіанти описані в перших двох радах. Щоб скористатися іншими радами, знадобиться доступ на хостинг, де зберігається сайт.

1. Перезавантажте сторінку

Буває таке, що 504 помилка відображається в моменті: ви зайшли на сервер, коли він був перевантажений, але все відразу ж повернулося в норму і при повторному завантаженні сайт вже завантажується як зазвичай.

Спробуйте також зайти на сайт в іншому браузері або очистити кеш у поточному, щоб виключити сценарії, коли проблема вирішилася сама собою, але ви у себе в браузері бачите копію сторінки. Взагалі, сторінки з такими помилки не кешуються за замовчуванням, але це могли змінити.

2. Перевірте налаштування CDN

Помилка 504 може виникати, якщо ви використовуєте CDN. Найчастіше це відбувається через те, що віддалений сервер провайдера CDN не дочікується відповіді від сервера, на якому зберігається ваш сайт. Наприклад, якщо основний сервер перенавантажений, або трафік з CDN блокується: у налаштуваннях веб-сервера або брандмауера.

Перше, що ви можете зробити, щоб розібратися, — тимчасово відключити CDN. Для цього можна додати в файл hosts у себе на комп’ютері запис з IP-адресою вашого основного сервера, щоб трафік йшов в обхід CDN конкретно на вашому комп’ютері.

Як змінити файл hosts

Якщо після відключення 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, яку надаємо у себе на хостингу ми і деякі інші провайдери, для цього потрібно знайти на головній сторінці блок «Файли» і перейти в «Менеджер файлів».

HTTP-response 504 Gateway Time-out через проблеми з плагінами на WordPress, крок 1 - зайти в менеджер файлів в cPanel.

У Менеджері файлів перейдіть ліворуч у кореневу папку домену, відкрийте в ній папку wp-content і перейменуйте папку plugins. Наприклад, в plugins-off. Після цього плагіни на вашому сайті перестануть працювати.

Коренева папка для основного домену на хостингу зазвичай називається public_html, а для додаткового — так само, як і сам домен. Також цю папку можна подивитися в розділі «Домени» на головній сторінці cPanel.

HTTP status code 504 Gateway Time-out через проблеми з плагінами на WordPress, крок 2 - перейменувати папку plugins в кореневому Католог сайту.

Якщо після відключення плагінів 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 та перевірять, щоб він правильно працював.

Детальніше про переїзд

Чи була ця стаття корисною?

Дякуємо за відгук!