Настройка Cloudflare CDN
Cloudflare — самый распространённый CDN с бесплатным тарифом, включающим DDoS-защиту, WAF, SSL и сеть из 300+ точек присутствия. Переключение DNS на Cloudflare занимает 15 минут; настройка кеширования — ещё час.
Подключение
- Зарегистрироваться на cloudflare.com, добавить домен
- Cloudflare сканирует DNS-записи и предлагает их импортировать
- Заменить NS-серверы у регистратора на cloudflare NS (kate.ns.cloudflare.com, jay.ns.cloudflare.com)
- Распространение DNS: 5 минут – 24 часа
Записи с оранжевым облачком (proxied) — трафик идёт через Cloudflare. Серое облачко (DNS only) — Cloudflare только резолвит DNS.
Режим SSL/TLS
Настройка: SSL/TLS → Overview:
| Режим | Когда использовать |
|---|---|
| Off | Никогда |
| Flexible | Только если нет SSL на сервере (не рекомендуется) |
| Full | Самоподписанный сертификат на сервере |
| Full (strict) | Действующий сертификат на сервере (рекомендуется) |
Правила кеширования (Cache Rules)
# 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
Page Rules (устаревший интерфейс, но всё ещё работает)
example.ru/admin/* → Cache Level: Bypass
example.ru/api/* → Cache Level: Bypass
example.ru/assets/* → Cache Level: Cache Everything, Edge Cache TTL: 1 year
Workers — edge-вычисления
// Добавление security-заголовков на уровне CDN
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;
}
Оптимизации Speed
- Auto Minify → HTML, CSS, JS (включить)
- Rocket Loader → асинхронная загрузка JS (тестировать — может ломать некоторые скрипты)
- Polish → автоматическая конвертация изображений в WebP (только на платных планах)
- Mirage → адаптивные изображения (платный план)
- Early Hints → 103 Early Hints для preload ресурсов (включить)
Firewall Rules / WAF
# Блокировать ботов по 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
Terraform для Infrastructure as Code
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"
}
}
resource "cloudflare_page_rule" "cache_assets" {
zone_id = var.zone_id
target = "${var.domain}/assets/*"
priority = 1
actions {
cache_level = "cache_everything"
edge_cache_ttl = 31536000
browser_cache_ttl = 31536000
}
}
Срок настройки: несколько часов для базовой конфигурации с кешированием и WAF.







