Cloudflare ломает админку WordPress — как исправить
Что конкретно сломалось
- Редирект. Cloudflare проксирует HTTPS, сервер думает что соединение HTTP, WordPress редиректит на HTTPS, Cloudflare опять проксирует — круг замкнулся.
- 403 при входе. WAF принимает POST-запрос к wp-login.php за брутфорс-атаку.
- Битый CSS в админке. Cloudflare кэширует статику админки, а она меняется при обновлении WordPress.
- Замедление в РФ. Трафик через зарубежные узлы Cloudflare добавляет 100-300 мс. Для российских посетителей каждый запрос идёт через Европу.
Исправление
1. Page Rule для /wp-admin/
Главное правило — отключить кэш и оптимизацию для админки:
Cloudflare → Rules → Page Rules → Create Rule:
URL: *ваш-сайт.ru/wp-admin*
Cache Level: Bypass
Disable Performance: ON
Security Level: Low
Save and Deploy
2. SSL: Full (strict)
Cloudflare → SSL/TLS → Overview → Full (strict).
Не Flexible. Flexible проксирует HTTPS→HTTP без проверки сертификата сервера. WordPress видит HTTP и редиректит на HTTPS — получается петля.
3. WordPress за прокси
Добавьте в wp-config.php — иначе WordPress не знает реальный IP посетителя:
if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
}
if (strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) {
$_SERVER['HTTPS'] = 'on';
}
4. WAF: пропустить wp-login.php
Cloudflare → Security → WAF → Custom Rules:
URI Path → contains → /wp-login.php
Action: Skip → All remaining custom rules
Дополнительно: WooCommerce
Корзина, чекаут и личный кабинет тоже не должны кэшироваться:
*ваш-сайт.ru/cart*
*ваш-сайт.ru/checkout*
*ваш-сайт.ru/my-account*
Cache Level: Bypass
Без этого — товары в корзине «залипают», заказы не обновляются.
Cloudflare в России: настройка для РФ-трафика
Cloudflare маршрутизирует трафик через ближайший дата-центр. Для России это часто Хельсинки, Стокгольм или Франкфурт. Результат — лишние 100-300 мс на каждый запрос. Что можно сделать:
- Cloudflare → Speed → Argo Smart Routing. Платный (5$/мес + трафик), но находит быстрейший маршрут до сервера. Для РФ-аудитории дата-центр в Москве становится доступнее.
- Cache Level: Standard → Cache Everything для статики. Чем больше кэшируется на Edge, тем меньше запросов до origin-сервера.
- Если аудитория >80% РФ — рассмотрите российский CDN (CDNVideo, Selectel) вместо или вместе с Cloudflare. Cloudflare хорош для глобального сайта, но проигрывает в скорости для чисто российской аудитории.
Когда способ не сработает
- Хостинг не позволяет настроить SSL-сертификат. Full (strict) требует валидный сертификат на origin-сервере. На некоторых shared-хостингах это невозможно. Используйте Full (не strict) — Cloudflare примет самоподписанный сертификат сервера.
- Cloudflare блокирует легитимный трафик из РФ. Некоторые российские IP-диапазоны могут попадать под WAF-правила Cloudflare (особенно после обновлений). Проверьте Events Log в Security → Overview. Если видите блокировки российских IP без причины — создайте Custom Rule: Country = Russia → Action = Skip.
- Page Rules не хватает (бесплатный тариф — 3 правила). Приоритеты: 1) /wp-admin/* 2) /cart/* + /checkout/* 3) всё остальное. Если нужно больше — плагин Cloudflare для WordPress даёт часть возможностей без Page Rules.
Частые вопросы
wp-config.php. Или плагин Cloudflare.max_execution_time в PHP и добавьте Page Rule для /wp-admin/update* с увеличенным таймаутом.Не получается настроить Cloudflare?
Настрою Cloudflare и WordPress чтобы работали вместе без редиректов и 403.