Налаштування 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 рік, Browser TTL: 1 рік
# Правило 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 хвилин
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 рік
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") або
(http.user_agent contains "nikto") або
(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.







