Cloudflare замедляет сайт в России — как настроить и ускорить
Почему Cloudflare замедляет сайт в России
У Cloudflare нет собственных дата-центров в России. Ближайшие к РФ узлы находятся в Хельсинки, Франкфурте, Лондоне, Амстердаме и Сингапуре. После 2022 года ситуация ухудшилась — прямое соединение с этими узлами стало нестабильным, выросла задержка (latency).
Вот что происходит, когда посетитель из Москвы заходит на сайт через Cloudflare:
- Запрос идёт от пользователя к ближайшему DNS — Cloudflare может отдать IP европейского узла
- Трафик проходит через несколько транзитных операторов, включая европейских
- Cloudflare обращается к вашему серверу (origin) — если хостинг в РФ, трафик делает двойной прыжок: РФ → Европа → РФ
- TLS-терминация и WAF-проверки на европейском узле добавляют ещё 200-500 мс
Итог: TTFB 800-1500 мс вместо 100-300 мс без Cloudflare. Для Яндекса это критично — время загрузки влияет на ранжирование.
Как исправить: 3 рабочих способа
Способ 1. Отключить проксирование для российских IP
Самый простой вариант — отдавать российским посетителям сайт напрямую с вашего хостинга, минуя Cloudflare. Для этого настройте Page Rules или используйте Cloudflare Workers.
Через Page Rules (бесплатно):
Если у сайта нет Cloudflare Workers, можно сделать так:
- Не использовать прокси (оранжевая туча → серая) для A-записей, если большая часть аудитории из РФ
- Но тогда теряются защита от DDoS, WAF и кэширование
Через Cloudflare Workers (бесплатный план — 100 000 запросов/день):
Напишите скрипт, который проверяет страну посетителя и для России отдаёт напрямую с origin-сервера:
// Cloudflare Worker: пропускать РФ мимо Cloudflare
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const country = request.cf.country
// country = 'RU' для России
if (country === 'RU') {
// Отдаём напрямую с origin-сервера
const originUrl = 'https://ваш-сервер.ру' + new URL(request.url).pathname
return fetch(originUrl, request)
}
// Остальные — через обычный Cloudflare
return fetch(request)
}
Важно: Workers на бесплатном плане ограничены. Если на сайт заходит 200 000+ российских посетителей в день, Workers не покроет весь трафик.
Способ 2. Переключиться на российский CDN
В России есть несколько CDN, которые работают быстрее Cloudflare для местной аудитории:
- DDos-Guard (бывший QIWI CDN) — дата-центры в Москве, Питере, Новосибе. Есть защита от DDoS, WAF, кэширование. Тарифы от 1000 ₽/мес.
- CDNvideo — 20+ PoP в РФ и СНГ. Хорош для видео и статики. Цены от 1.5 ₽/Гб.
- StackPath — есть узел в Москве через партнёрство с DataLine.
- Selectel CDN — интеграция с облаком Selectel, узлы в Москве и Питере.
Способ 3. Использовать российский VPS как прослойку (reverse proxy)
Если нужно оставить Cloudflare (например, для глобальной аудитории), поставьте российский VPS между Cloudflare и вашим origin-сервером:
Cloudflare → российский VPS (Nginx reverse proxy) → ваш хостинг
Настройка Nginx reverse proxy (VPS от Beget/Timeweb/FirstVDS):
server {
listen 443 ssl http2;
server_name ваш-сайт.ру;
ssl_certificate /etc/letsencrypt/live/ваш-сайт.ру/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ваш-сайт.ру/privkey.pem;
location / {
proxy_pass https://ваш-origin-сервер.ру;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 30s;
proxy_read_timeout 60s;
proxy_send_timeout 30s;
proxy_buffer_size 16k;
proxy_buffers 8 16k;
proxy_busy_buffers_size 32k;
}
}
Такой VPS на Beget стоит 350-700 ₽/мес, на Timeweb — от 300 ₽/мес. Для небольшого сайта достаточно 1 vCPU и 1 ГБ RAM.
Способ 4. Настроить кэширование Cloudflare для РФ
Если полностью убрать Cloudflare нельзя, хотя бы настройте агрессивное кэширование статики. В дашборде Cloudflare → Caching → Configuration:
- Browser Cache TTL: 4 hours или longer
- Always Online: On (если origin упадёт, Cloudflare отдаст кэш)
- Development Mode: Off
В Page Rules создайте правило для статики:
URL: ваш-сайт.ру/wp-content/uploads/*
Cache Level: Cache Everything
Edge Cache TTL: 7 days
Проверка результата
После любых изменений проверьте скорость через разные инструменты:
- PageSpeed Insights от Google (выберите сервер в Москве) — TTFB должен быть < 400 мс
- Яндекс.Вебмастер → Диагностика → Проверка скорости — показывает скорость с точки зрения Яндекса
- GTmetrix — выберите локацию Moscow или St. Petersburg
- Простая проверка через curl:
curl -s -o /dev/null -w "TCP: %{time_connect} ms
TLS: %{time_appconnect} ms
TTFB: %{time_starttransfer} ms
Total: %{time_total} ms
" https://ваш-сайт.ру/
Запустите curl с российского сервера (или через 4g-модем) и сравните с зарубежным. Разница в TTFB больше 500 мс — проблема в маршрутизации.
Когда эти способы не сработают
1. Вы на shared-хостинге без доступа к Nginx/Apache
На Beget, Timeweb, Reg.ru на дешёвых тарифах нет доступа к конфигам веб-сервера. Reverse proxy (Способ 3) не поставить. Остаётся только отключить проксирование в Cloudflare или перейти на российский CDN.
2. Весь трафик идёт из-за границы
Если 50%+ аудитории из Европы или США, убирать Cloudflare полностью не стоит — для них он ускоряет. Используйте Workers (Способ 1) — он точечно отключает прокси для РФ.
3. Cloudflare Essential plan (платный тариф)
На платных тарифах есть Argo Smart Routing, который сам выбирает оптимальный маршрут. Включите его — возможно, это снизит задержку для РФ без ручных настроек. Argo стоит $5/мес сверх тарифа.
4. Сайт на WordPress с плагинами кэширования
Если стоит WP Rocket, W3 Total Cache или LiteSpeed Cache — проверьте, не конфликтует ли кэш плагина с кэшем Cloudflare. Двойное кэширование иногда даёт обратный эффект.
Частые вопросы
Настроим Cloudflare под РФ-трафик?
Диагностирую текущую скорость, настрою Workers или подберу российский CDN под ваш бюджет. Есть опыт с Beget, Timeweb и DDos-Guard.