Skip to content
EN
← Все статьи

Ошибка 524 Cloudflare: что значит и как исправить таймаут

Страница ошибки таймаута с цепочкой браузер — CDN — сервер, последнее звено помечено

Ошибка 524 (A Timeout Occurred) означает, что Cloudflare подключился к серверу сайта и передал ему запрос, но не получил HTTP-ответ за отведённое время — по текущей документации это 125 секунд. Сервер при этом жив: он просто слишком долго считает отчёт, ждёт базу данных или перегружен. Исправлять ошибку должен владелец сайта, посетителю остаётся подождать и повторить позже.

На странице ошибки видна схема из трёх звеньев: браузер «Working», Cloudflare «Working», хост «Error», а внизу — Ray ID, номер запроса для поиска в логах. Ошибка 524 в Роблоксе — другая ошибка, к сайтам и Cloudflare она не относится.

Что значит ошибка 524

Когда сайт подключён к Cloudflare в режиме проксирования (оранжевое облако в DNS), между посетителем и вашим сервером появляются два отдельных соединения: браузер — узел Cloudflare и узел Cloudflare — ваш сервер (origin). Код 524 рождается на втором участке. Cloudflare установил TCP-соединение, отправил запрос, сервер его принял — и замолчал дольше, чем позволяет лимит Proxy Read Timeout.

В таблице лимитов соединений Cloudflare этот таймаут сейчас равен 125 секундам. Во многих статьях до сих пор фигурирует цифра 100 секунд — это значение из более старой версии документации. На бесплатном, Pro и Business тарифах лимит не настраивается, на Enterprise его можно поднять до 6000 секунд.

Есть второй, менее известный источник того же кода: Proxy Write Timeout. Если Cloudflare не успевает за 30 секунд передать на ваш сервер тело запроса (например, при загрузке большого файла на медленный или перегруженный origin), посетитель тоже увидит 524. Этот лимит не меняется ни на каком тарифе.

Важное следствие: посетитель видит ошибку, но ваш сервер, скорее всего, продолжает выполнять запрос — импорт дойдёт до конца, заказ создастся. Поэтому повторное нажатие кнопки после 524 нередко даёт дубли.

Почему возникает ошибка 524

Коротко — запрос работает дольше 125 секунд. Причины, которые встречаются на практике чаще всего:

  • Долгая операция внутри HTTP-запроса. Выгрузка каталога в CSV или YML, формирование отчёта за год, импорт товаров, резервная копия из админки, пакетная обработка изображений.
  • Медленный запрос к базе данных. Нет индекса, полный перебор большой таблицы, блокировка строк другой транзакцией.
  • Внешний сервис без таймаута. Скрипт обращается к API платёжного шлюза, CRM или обмену с 1С, внешняя сторона зависла, а у HTTP-клиента не задан лимит ожидания — и ваш сервер ждёт вместе с ним.
  • Перегрузка сервера. Все процессы PHP-FPM или воркеры приложения заняты, новый запрос стоит в очереди. Сама страница лёгкая, но до неё просто не доходит очередь. Типичный триггер — наплыв ботов, рассылка или распродажа.
  • Слишком щедрые таймауты на самом сервере. Если fastcgi_read_timeout, proxy_read_timeout в nginx и max_execution_time в PHP подняты до 300–600 секунд, сервер честно ждёт скрипт, а Cloudflare обрывает ожидание раньше.

Как сузить причину по симптомам

Что наблюдаетеВероятная причинаКуда смотреть
524 только на одном адресе (экспорт, отчёт, импорт)Долгая операция в запросеКод обработчика, медленные SQL-запросы
524 на любых страницах, в том числе на лёгкихСервер перегружен, запросы стоят в очередиЗагрузка CPU, лог PHP-FPM, число процессов
524 в одно и то же время сутокCron, бэкап или обмен с 1С забирают ресурсыРасписание cron, логи заданий
524 при оплате или отправке формыВнешний API отвечает медленно или зависТаймауты HTTP-клиента, лог интеграции
524 при загрузке больших файловСервер не принимает тело запроса за 30 секундКанал до сервера, client_max_body_size, буферизация

Ошибка 524: что делать, если вы посетитель

Проблема находится между Cloudflare и сервером сайта, поэтому очистка кеша браузера, смена DNS или перезагрузка роутера здесь не помогут — ваша часть цепочки на схеме подписана «Working». Разумные действия такие:

  1. Подождите несколько минут и обновите страницу. Если сервер был перегружен кратковременно, ошибка уйдёт сама.
  2. Не отправляйте форму и не нажимайте «Оплатить» повторно сразу. Сначала проверьте почту, личный кабинет или историю платежей: действие могло выполниться, несмотря на ошибку.
  3. Если ошибка держится, сообщите владельцу сайта время и Ray ID со страницы ошибки. Глобальный сбой Cloudflare легко исключить по официальной странице статуса, но для 524 он нехарактерен: ошибка почти всегда на стороне конкретного сайта.

Как исправить ошибку 524 на своём сайте

Порядок работы: найти запрос, который не укладывается в лимит, понять, почему он долгий, и ускорить его или вынести из HTTP-запроса.

Шаг 1. Найдите медленный запрос в логах

Стандартный формат access-лога nginx не пишет время обработки. Добавьте его и заодно Ray ID, чтобы сопоставлять записи с жалобами посетителей:

# /etc/nginx/nginx.conf, внутри блока http
log_format timed '$remote_addr [$time_local] "$request" $status '
                 '$request_time $upstream_response_time "$http_cf_ray"';

# в нужном server-блоке
access_log /var/log/nginx/access_timed.log timed;

После nginx -t и systemctl reload nginx отберите запросы дольше минуты — время обработки стоит третьим полем с конца строки:

awk '$(NF-2) > 60' /var/log/nginx/access_timed.log | tail -n 20

Характерный след ошибки 524 в логе nginx — статус 499 у долгих запросов: так nginx помечает случаи, когда клиент (здесь это Cloudflare) закрыл соединение, не дождавшись ответа. Подробнее о форматах и расположении файлов — в статье про логи nginx.

Шаг 2. Замерьте ответ сервера в обход Cloudflare

Нужно понять, сколько думает сам origin, без прокси. Опция --resolve отправляет запрос прямо на IP сервера, сохраняя правильное имя хоста. Флаг -k нужен, если на сервере стоит сертификат Cloudflare Origin CA — curl ему не доверяет.

# Linux / macOS
curl -sk -o /dev/null \
  -w "code=%{http_code} ttfb=%{time_starttransfer}s total=%{time_total}s\n" \
  --resolve example.com:443:203.0.113.10 https://example.com/admin/export

В Windows 10 и 11 curl встроен. В PowerShell вызывайте именно curl.exe, иначе сработает псевдоним Invoke-WebRequest:

curl.exe -sk -o NUL -w "code=%{http_code} ttfb=%{time_starttransfer}s\n" --resolve example.com:443:203.0.113.10 https://example.com/admin/export

ttfb — время до первого байта. Если оно подбирается к 125 секундам, причина подтверждена: не успевает сам сервер.

Шаг 3. Посмотрите, чем занят сервер

Для PHP-сайтов самый полезный инструмент — slow log пула PHP-FPM: он записывает стек вызовов скрипта, который выполняется дольше заданного порога. Параметры описаны в документации PHP-FPM:

; файл пула, например /etc/php/8.3/fpm/pool.d/www.conf
request_slowlog_timeout = 10s
slowlog = /var/log/php8.3-fpm-slow.log

Там же проверьте, не упирается ли пул в лимит процессов. Сообщение server reached pm.max_children setting в основном логе PHP-FPM означает, что новые запросы стоят в очереди. Путь к логу зависит от дистрибутива и версии PHP:

grep -i "max_children" /var/log/php8.3-fpm.log | tail -n 5

В MySQL и MariaDB зависшие запросы видны в SHOW FULL PROCESSLIST;, а медленные можно собрать временным включением slow log:

SET GLOBAL slow_query_log = 1;
SET GLOBAL long_query_time = 2;
SHOW VARIABLES LIKE 'slow_query_log_file';

Если обработчик ходит во внешние API, задайте HTTP-клиенту таймаут (в PHP — CURLOPT_TIMEOUT): зависание чужого сервиса не должно подвешивать ваш.

Шаг 4. Вынесите долгую работу из HTTP-запроса

Это основное лечение, его рекомендует и сама Cloudflare. Вместо того чтобы держать соединение открытым, пока формируется отчёт, запрос только ставит задачу и сразу отвечает:

  1. Пользователь нажимает «Выгрузить». Сервер кладёт задачу в очередь и за доли секунды возвращает 202 Accepted с идентификатором задачи.
  2. Фоновый обработчик (воркер очереди или задание cron) выполняет работу столько, сколько нужно, — лимиты Cloudflare его не касаются.
  3. Страница раз в несколько секунд опрашивает адрес вида /jobs/123/status и показывает прогресс.
  4. Когда задача готова, пользователь получает ссылку на файл или письмо.

Готовые механизмы есть почти в любом стеке: очереди Laravel, Symfony Messenger, Celery, BullMQ. На WordPress тяжёлые операции удобнее запускать через WP-CLI по SSH, в 1С-Битрикс — агентами на cron.

Шаг 5. Для тяжёлых операций — поддомен без проксирования

Если админские выгрузки неизбежно долгие, их можно перенести на отдельный поддомен, например ops.example.com, и в разделе DNS панели Cloudflare переключить его запись в режим DNS only (серое облако). Запросы к нему пойдут напрямую на сервер, и лимит 125 секунд перестанет действовать. Цена решения:

  • IP сервера становится публичным. Закройте поддомен списком разрешённых адресов или авторизацией, иначе вы открываете обходной путь мимо защиты Cloudflare.
  • Сертификат для поддомена нужен свой, публично доверенный (например, Let’s Encrypt): сертификат Cloudflare на узлах сети здесь не участвует, а Origin CA браузеры не принимают.

Шаг 6. Отдавайте ответ по частям, если задача это позволяет

Если результат формируется построчно (большой CSV), его можно отдавать потоком: заголовки уходят сразу, данные — по мере готовности. Буферизацию нужно отключить на всём пути: flush() в PHP, fastcgi_buffering off; или заголовок X-Accel-Buffering: no в nginx. Проверьте поведение через Cloudflare на тестовом адресе, прежде чем полагаться на этот способ.

Шаг 7. Enterprise: увеличить Proxy Read Timeout

На тарифе Enterprise лимит поднимается до 6000 секунд — через правило Cache Rules с настройкой Proxy Read Timeout или через API для всей зоны. Это описано в разделе документации Cloudflare об ошибке 524. На остальных тарифах такой настройки нет.

Что не поможет

Увеличение fastcgi_read_timeout, proxy_read_timeout или max_execution_time выше 125 секунд ошибку не уберёт: сервер будет готов ждать, а Cloudflare — нет. Полезнее обратное: держать таймауты origin чуть ниже лимита Cloudflare — тогда зависший запрос остановит ваш nginx с кодом 504 и понятной записью в error.log. Приостановка Cloudflare (Pause Cloudflare on Site) годится только для диагностики.

Ошибки Cloudflare 520, 521, 522, 523, 524, 525, 526: таблица

Все коды из диапазона 52x Cloudflare генерирует сама, когда что-то идёт не так на участке между её сетью и вашим сервером. В стандарте HTTP их нет. Отличаются они тем, на каком этапе оборвалось общение:

КодТекст на страницеЧто произошлоГде искать причину
520Web server is returning an unknown errorСервер вернул пустой, непонятный или обрезанный ответПадения веб-сервера и PHP, заголовки больше 128 КБ, настройки HTTP/2 на origin
521Web server is downСервер отказал в соединенииВеб-сервер не запущен или файрвол блокирует IP Cloudflare
522Connection timed outTCP-соединение не установилось за 19 секунд или сервер не подтвердил запросПерегрузка, файрвол, сетевые потери
523Origin is unreachableCloudflare не может найти маршрут до сервераНеверный IP в записи A/AAAA, маршрутизация
524A timeout occurredСоединение есть, запрос принят, ответа нет 125 секундДолгие скрипты, база данных, очередь запросов
525SSL handshake failedНе удалось TLS-рукопожатие между Cloudflare и серверомПротоколы и шифры, SNI, порт 443 на origin
526Invalid SSL certificateВ режиме Full (strict) сертификат origin не прошёл проверкуСрок, имя в сертификате, неполная цепочка

По 522 и 525 есть отдельные разборы: ошибка 522 Connection Timed Out и ошибка 525 SSL Handshake Failed.

Ошибка 520: что означает

Код ошибки 520 — «всё остальное»: сервер ответил так, что Cloudflare не смог разобрать ответ. Частые виновники — упавший посреди ответа процесс PHP, сброс соединения файрволом, огромные заголовки из-за десятков cookie, некорректный HTTP/2 на origin (помогает отключение HTTP/2 to Origin в настройках Speed). Начинайте с error.log веб-сервера.

Ошибка 521: веб-сервер не работает

521 — сервер отказал в подключении: веб-сервер остановлен (проверьте systemctl status nginx) или файрвол блокирует адреса Cloudflare. Разрешите диапазоны IP Cloudflare и проверьте, что сервер слушает нужный порт: 80 в режиме Flexible, 443 в режимах Full и Full (strict).

Чем 524 отличается от 504

Оба кода про таймаут, но выдают их разные звенья. 504 Gateway Timeout отдаёт ваш собственный прокси (обычно nginx перед PHP-FPM или приложением), когда бэкенд не ответил в пределах его таймаута, по умолчанию 60 секунд. 524 выдаёт Cloudflare, когда молчит весь ваш сервер. Если на странице Cloudflare стоит код 504, а не 524, чаще всего это значит, что таймаут сработал на вашем nginx, а Cloudflare лишь показал его ответ в своём оформлении. Разбор 504 — в статье 504 Gateway Timeout.

Как проверить, отвечает ли сайт и сколько он думает

  • Проверка HTTP-заголовков покажет код ответа, время ответа и заголовки. Наличие server: cloudflare и cf-ray подтверждает, что трафик идёт через прокси.
  • DNS-запросы покажут, какие записи проксируются, а какие ведут прямо на сервер, — это нужно и при ошибке 523.
  • Мониторинг сайта проверяет адрес по расписанию, хранит историю времени ответа и присылает уведомление о кодах 5xx — рост времени ответа виден раньше, чем он превратится в 524.

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

Частые вопросы

Ошибка 524 — это сбой Cloudflare?

Нет. Cloudflare лишь сообщает, что ваш сервер не ответил вовремя. Сеть Cloudflare при этом работает, на схеме ошибки она отмечена как «Working».

Сколько Cloudflare ждёт ответа перед ошибкой 524?

125 секунд на получение ответа и 30 секунд на передачу тела запроса на сервер. Первый лимит настраивается только на Enterprise, до 6000 секунд, второй не меняется.

Почему 524 появляется только в админке?

Там живут тяжёлые операции: импорт, экспорт, пересчёт цен, резервное копирование. Их нужно переводить в фоновые задачи или на поддомен без проксирования.

Можно ли просто отключить Cloudflare?

Временно — для проверки, что без прокси запрос проходит. Как постоянное решение это плохая идея: вы теряете защиту и кеширование, а медленный запрос никуда не девается и будет упираться в таймауты вашего же сервера.

Выполнился ли мой запрос, если я увидел 524?

Часто да: сервер продолжает работу после того, как Cloudflare перестал ждать. Прежде чем повторять оплату или отправку формы, проверьте результат в личном кабинете или почте.

Проверьте ваш сайт прямо сейчас

Проверить HTTP-статус сайта →
Другие статьи: HTTP
HTTP
HTTP-заголовки: полный разбор запроса и ответа сервера
10.03.2025 · 1 239 просм.
HTTP
Жизненный цикл HTTP-запроса: от URL до готовой страницы
16.03.2026 · 1 017 просм.
HTTP
HTTP-методы: GET, POST, PUT, DELETE и другие
16.03.2026 · 833 просм.
HTTP
Ошибка 404: что значит Not Found и как исправить на сайте
15.04.2026 · 765 просм.