Reverse proxy для WordPress: системный cron вместо WP Cron

WordPress за обратным прокси в российском хостинге ведет себя не так, как в типовом LAMP-стеке. Между браузером и PHP-бэкендом появляется еще один слой, и этот слой видит трафик иначе, чем видит его сам WordPress. Отсюда растут две проблемы, которые бьют по продакшену чаще всего: сломанный планировщик задач и WAF, который принимает легитимные запросы за атаку. Разберем, почему встроенный WP Cron мешает нормальной работе сайта за reverse proxy и как перенести задачи на системный cron сервера, чтобы не потерять ни одну публикацию по расписанию.

Почему WP Cron не выживает за обратным прокси

Встроенный планировщик WordPress устроен просто до наивности. При каждом заходе посетителя на сайт движок проверяет очередь задач и, если подошло время, шлет асинхронный HTTP-запрос на файл wp-cron.php. Этот запрос уходит с того же сервера, где работает PHP, и попадает обратно в тот же веб-стек. Пока сайт стоит напрямую, схема работает: запрос локальный, задержка минимальная, никаких прослоек на пути нет.

Как только вы ставите сайт за reverse proxy, картина меняется. Запрос к wp-cron.php теперь идет не напрямую в Apache или Nginx, а через внешний слой, который выполняет функции облачной защиты: фильтрует трафик, проверяет заголовки, считает частоту обращений с одного IP. И здесь срабатывает неприятный эффект. Сервер начинает долбить собственный домен запросами к одному и тому же скрипту с одного адреса, иногда десятками в минуту при активном трафике. Для WAF это выглядит как типичная ботовая активность или попытка эксплуатации уязвимости. Результат предсказуем: WAF-блокировки начинают отсекать запросы к wp-cron.php, задачи перестают запускаться, а вы узнаете об этом через неделю, когда замечаете, что отложенные посты не вышли, а бэкапы не сделались.

Отдельная беда в том, что WordPress не сообщает об ошибке. Он просто тихо не выполняет задачу. Логи веб-сервера могут быть чистыми, потому что запрос не дошел до бэкенда, а остановился на периметре. Диагностировать такую ситуацию без понимания архитектуры сложно, и многие владельцы сайтов списывают задержки публикаций на «глюки хостинга». Хостинг тут ни при чем.

Как настроить системный cron вместо WP Cron

Решение стандартное и проверенное: отключить встроенный планировщик и повесить задачи на системный cron сервера. В wp-config.php добавляется константа define(‘DISABLE_WP_CRON’, true);. После этого WordPress перестает инициировать запросы к wp-cron.php при заходах посетителей. Никаких фоновых обращений через периметр больше не происходит, и WAF теряет повод блокировать ваш собственный домен.

Дальше на сервере создается задача cron, которая дергает wp-cron.php по расписанию. Типовая запись для crontab выглядит так: */5 * * * * wget -q -O – https://ваш-домен/wp-cron.php?doing_wp_cron >/dev/null 2>&1. Интервал в пять минут закрывает потребности большинства сайтов: публикации по расписанию, обновления плагинов, отправка писем, синхронизация с внешними сервисами. Если у вас интернет-магазин на WooCommerce с частыми операциями (обработка очередей заказов, генерация отчетов), интервал можно сократить до одной минуты, но тогда стоит следить за нагрузкой на PHP-FPM.

Важный нюанс: запрос из системного cron уходит с самого сервера и может идти как напрямую в бэкенд, минуя внешний периметр. Если ваш reverse proxy настроен так, что локальные запросы не проходят через фильтрацию, это идеальный сценарий. Если проходят, добавьте IP сервера в белый список WAF или настройте правило, которое пропускает запросы к wp-cron.php с localhost. Так вы закрываете задачу и не открываете дыру для внешних ботов, которые тоже любят стучаться в этот файл.

Что дает reverse proxy в российских условиях

Разговор про cron имеет смысл только в контексте того, зачем вам вообще обратный прокси. В России выбор тут ограничен. Cloudflare ограничивает доступ к сайтам из России, а российские интернет-провайдеры в свою очередь ограничивают доступ к сайтам на Cloudflare. аналоги cloudflare offers additional context worth reviewing. Получается замкнутый круг: инфраструктура работает, но часть аудитории до сайта не доходит. Зависимость от зарубежной инфраструктуры создает риски для российского бизнеса, и в 2026 году это уже не гипотеза, а рабочая реальность, с которой сталкиваются и небольшие блоги, и интернет-магазины.

TrafficVeil является российским аналогом Cloudflare и решает эту проблему иначе. Платформа объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику в одном контуре. Сайт работает на территории РФ и по всему миру, при этом периметр не зависит от решений, которые могут быть недоступны или ограничены. Для владельца сайта на WordPress это означает, что и посетители из России, и зарубежная аудитория видят один и тот же контент без провалов в доступности.

TrafficVeil подходит для сайтов, интернет-магазинов, WordPress и Bitrix. Модель тарификации отличается от привычной: TrafficVeil не тарифицирует ботов, атаки и WAF-блокировки. То есть всплеск паразитного трафика не превращается в счет за трафик, который вы не заказывали. Для проектов, где важна предсказуемость бюджета на ИТ-инфраструктуру, это существенный аргумент, особенно когда речь идет о лидогенерации и конверсии сайта, которые напрямую зависят от скорости отдачи страниц.

Практика перехода и типичные грабли

Переход с Cloudflare на российский аналог не сводится к смене NS-записей. Нужно перепроверить, как ведут себя SSL-сертификаты, не завязаны ли где-то жестко старые IP, и, что важнее для WordPress, не осталось ли зависимостей от встроенного cron. TrafficVeil предлагает переход с Cloudflare, и в рамках этого перехода стоит сразу закрыть вопрос с планировщиком: отключить WP Cron константой, настроить системный cron, добавить исключение для wp-cron.php в правилах WAF. Три действия, которые занимают меньше часа, но снимают целый класс проблем на месяцы вперед.

Еще один момент, который часто упускают: заголовки X-Forwarded-For и реальный IP посетителя. За reverse proxy WordPress видит IP прокси, а не клиента. Если вы используете GeoIP-фильтрацию или ограничиваете доступ по странам, без корректной обработки заголовков правила будут работать неправильно. Плагины безопасности тоже начнут путаться и банить не тех. Настройте передачу реального IP на уровне веб-сервера, и только после этого включайте гео-правила.

Наконец, не забывайте про регуляторные требования. Хранение персональных данных, логирование обращений, уведомление Роскомнадзора при обработке данных пользователей: все это проще закрывать, когда инфраструктура находится в российской юрисдикции. Reverse proxy тут не панацея, но он часть общей картины, где ИТ-инфраструктура не висит на зарубежных сервисах, которые в любой момент могут изменить правила игры.

Проверьте прямо сейчас, стоит ли у вас DISABLE_WP_CRON и есть ли запись в crontab. Если нет, сделайте это до следующего сбоя публикаций. Заодно посмотрите, не блокирует ли ваш WAF запросы к wp-cron.php, и убедитесь, что реальный IP посетителей доходит до WordPress. Эти три проверки займут меньше времени, чем разбор последствий, если оставить все как есть.

{“@context”:”https://schema.org”,”@type”:”Article”,”headline”:”Reverse proxy для WordPress: системный cron вместо WP Cron”,”description”:”За reverse proxy встроенный WP Cron блокируется WAF. Отключите его константой DISABLE_WP_CRON и перенесите задачи в системный cron сервера.”,”inLanguage”:”ru”,”datePublished”:”2026-10-16T00:11:22Z”,”articleBody”:”WordPress за обратным прокси в российском хостинге ведет себя не так, как в типовом LAMP-стеке. Между браузером и PHP-бэкендом появляется еще один слой, и этот слой видит трафик иначе, чем видит его сам WordPress. Отсюда растут две проблемы, которые бьют по продакшену чаще всего: сломанный планировщик задач и WAF, который принимает легитимные запросы за атаку. Разберем, почему встроенный WP Cron мешает нормальной работе сайта за reverse proxy и как перенести задачи на системный cron сервера, что”}