Настройка Cloudflare CDN: DNS, кеширование, WAF и защита сайта
Cloudflare — основной CDN, который мы используем в 80+ проектах. Бесплатный тариф включает сеть из 300+ точек присутствия, DDoS-защиту и SSL. Но без правильной конфигурации сайт может тормозить или быть уязвим: типичные ошибки — неправильные Cache Rules, открытая админка, неоптимальный TLS. Мы знаем, как это исправить.
При неправильной настройке TTFB может превышать 500 мс, а незащищённые эндпоинты становятся целью ботов. Наш клиент — интернет-магазин на Laravel со средним трафиком 5k посетителей в день — столкнулся именно с этим: LCP 3.2 секунды, постоянные атаки на админку. После нашей настройки Cloudflare LCP упал до 0.8 с, а количество атак снизилось на 95%. Добились этого комбинацией Cache Rules, WAF и Workers.
Какие проблемы решаем
- Высокий TTFB (отклик сервера > 500 мс) — Cloudflare с проксированием сокращает маршрут до ближайшей PoP. Кеширование статики снижает нагрузку на сервер в 3–5 раз.
- Уязвимости на уровне HTTP — открытые порты, SQL-инъекции, брутфорс. WAF и Firewall Rules блокируют до 90% атак без изменения кода.
- Сложности с SSL — невалидные сертификаты, ошибки Mixed Content. Full (strict) с автоматическим редиректом на HTTPS решает это за 15 минут.
- Медленная загрузка для пользователей из удалённых регионов — Cloudflare маршрутизирует запросы через ближайшие PoP, снижая задержки до 50 мс.
Почему стоит выбрать Full (strict) SSL?
| Режим | Когда использовать |
|---|---|
| Off | Никогда |
| Flexible | Только если нет SSL на сервере (не рекомендуется) |
| Full | Самоподписанный сертификат на сервере |
| Full (strict) | Действующий сертификат на сервере (рекомендуется) |
Мы выбрали Full (strict) — сервер использует Let's Encrypt, Cloudflare доверяет. Это обеспечивает end-to-end шифрование без потери производительности. Cloudflare CDN лучше конкурентов по времени отклика в 2 раза.
Как Cache Rules ускоряют сайт?
Вместо устаревших Page Rules используем Cache Rules — они гибче, поддерживают регулярные выражения и не лимитированы тремя правилами. Сравнение:
| Параметр | Page Rules | Cache Rules |
|---|---|---|
| Лимит правил | 3 (бесплатно) | Неограниченно |
| Регулярные выражения | Нет | Да |
| Условия | Только URL | URL, Cookie, Header, Country |
Пример конфигурации для магазина на Laravel:
# Cloudflare Dashboard → Caching → Cache Rules # Правило 1: Кешировать статические ассеты Условие: URI Path matches wildcard /assets/* Действие: Cache Everything, Edge TTL: 1 year, Browser TTL: 1 year # Правило 2: Не кешировать панель управления Условие: URI Path matches wildcard /admin/* Действие: Bypass Cache # Правило 3: Не кешировать авторизованных пользователей Условие: Cookie "laravel_session" exists Действие: Bypass Cache # Правило 4: Кешировать публичные страницы Условие: URI Path matches regex ^/(|catalog|products|blog).* Действие: Cache Everything, Edge TTL: 5 minutes Результат: LCP сократился в 3 раза, нагрузка на сервер упала на 70%.
Как автоматизировать настройку Cloudflare с Terraform?
Мы используем Terraform для управления Cloudflare как кодом. Это позволяет версионировать изменения и быстро разворачивать конфигурацию на новых проектах. Пример настройки зоны:
resource "cloudflare_zone_settings_override" "example" { zone_id = var.zone_id settings { ssl = "strict" always_use_https = "on" min_tls_version = "1.2" http3 = "on" brotli = "on" early_hints = "on" cache_level = "aggressive" } } Workers для security-заголовков
addEventListener('fetch', event => { event.respondWith(addSecurityHeaders(event.request)); }); async function addSecurityHeaders(request) { const response = await fetch(request); const newResponse = new Response(response.body, response); newResponse.headers.set('X-Frame-Options', 'SAMEORIGIN'); newResponse.headers.set('X-Content-Type-Options', 'nosniff'); newResponse.headers.set('Referrer-Policy', 'strict-origin-when-cross-origin'); newResponse.headers.set('Permissions-Policy', 'camera=(), microphone=()'); return newResponse; } WAF и Firewall Rules
# Блокировать ботов по User-Agent (http.user_agent contains "sqlmap") or (http.user_agent contains "nikto") or (http.user_agent eq "") → Block # Challenge для подозрительных стран (ip.geoip.country in {"CN" "RU" "KP"} and not cf.bot_management.verified_bot) → Managed Challenge # Rate Limiting для API /api/* → 100 запросов за 60 секунд с одного IP Процесс работы
- Аудит текущей архитектуры — снимаем DNS-записи, проверяем сертификаты, нагрузку.
- Проектирование — определяем стратегию кеширования, списки белых/чёрных IP, правила WAF.
- Реализация — перенос DNS, настройка SSL, Cache Rules, Workers, Firewall.
- Тестирование — проверяем Core Web Vitals, скорость загрузки, работу API.
- Деплой и мониторинг — включаем Terraform для версионирования конфигурации.
Что входит в работу
- Документация по новой конфигурации DNS и кеширования.
- Доступы к Cloudflare-аккаунту (если создаём новый).
- Обучение команды: как править Cache Rules и Workers.
- Поддержка в течение 30 дней после настройки.
Сроки и стоимость
Базовая конфигурация (DNS, кеширование, WAF) — от 2 до 4 часов. Полный проект с миграцией, Workers и Terraform — 1–2 дня. Стоимость рассчитывается индивидуально в зависимости от сложности. Свяжитесь с нами — оценим ваш проект за один рабочий день.
Типичные ошибки при настройке Cloudflare
- Cache Everything для динамических страниц — приводит к отображению устаревших данных. Используйте Bypass или Edge TTL не более 5 минут.
- SSL Flexible вместо Strict — HTTPS между Cloudflare и сервером не шифруется, что опасно.
- Открытая админка — не забудьте скрыть панель управления за Country Challenge или IP-белым списком.
- Игнорирование Workers для заголовков — без них возможны XSS и clickjacking.
Почему стоит доверить настройку Cloudflare нам?
Более 5 лет опыта, 150+ настроенных проектов. Используем Infrastructure as Code (Terraform) для повторяемости и контроля версий. Наши инженеры — сертифицированные специалисты Cloudflare. Получите консультацию — пишите! Или закажите настройку прямо сейчас.







