Cloudflare: CDN и защита
Cloudflare — глобальная CDN-сеть и прокси, которая ускоряет доставку контента, автоматически выдаёт HTTPS-сертификаты, защищает от DDoS-атак и ботов, стоит перед вашим сервером как щит.
Зачем нужно
Cloudflare решает сразу несколько задач бесплатно: HTTPS-сертификат (без Let's Encrypt вручную), кэширование статики на глобальных edge-серверах (страница грузится быстрее для пользователей из разных стран), базовая DDoS-защита. Для большинства проектов бесплатный план полностью достаточен.
Где используется
- Любой публичный сайт или API: Cloudflare как первая точка входа трафика
- Защита реального IP-адреса сервера (через Cloudflare виден только IP Cloudflare)
- Кэширование статических ресурсов (CSS, JS, изображения) на edge
- Rate limiting для защиты API от злоупотреблений
Основной контент
Как работает
Пользователь → Cloudflare Edge (CDN/WAF/DDoS защита) → Ваш сервер
↑ кэш здесь для статики
После подключения домена к Cloudflare, DNS-записи указывают на Cloudflare, а не напрямую на сервер.
Настройка через Cloudflare Dashboard
- Добавить сайт → Cloudflare автоматически сканирует DNS
- Изменить NS-серверы домена на cloudflare NS
- Включить Proxy (оранжевое облачко) для A-записей — трафик идёт через Cloudflare
- SSL/TLS → режим "Full (strict)" — шифрование от клиента до Cloudflare и от Cloudflare до сервера
Cloudflare API / Terraform
# terraform для управления DNS через Cloudflare
terraform {
required_providers {
cloudflare = {
source = "cloudflare/cloudflare"
version = "~> 4"
}
}
}
provider "cloudflare" {
api_token = var.cloudflare_api_token
}
resource "cloudflare_record" "api" {
zone_id = var.zone_id
name = "api"
value = "1.2.3.4" # IP вашего сервера
type = "A"
proxied = true # включить Cloudflare proxy
ttl = 1 # Auto при proxied=true
}
Page Rules / Cache Rules
# Правило кэширования статики (через Dashboard или API)
# URL: *.example.com/assets/*
# Cache Level: Cache Everything
# Edge Cache TTL: 1 month
# Правило для API — не кэшировать
# URL: api.example.com/*
# Cache Level: Bypass
Cloudflare Workers (edge functions)
// Простой Workers-скрипт — запускается на Cloudflare edge
export default {
async fetch(request) {
const url = new URL(request.url);
// Перенаправление
if (url.pathname === '/old-page') {
return Response.redirect('https://example.com/new-page', 301);
}
// Проксирование с модификацией заголовков
const response = await fetch(request);
const newResponse = new Response(response.body, response);
newResponse.headers.set('X-Custom-Header', 'from-cloudflare');
return newResponse;
}
};
Полезные настройки
- Always Use HTTPS — автоматический редирект HTTP → HTTPS
- HTTP/2 — включено по умолчанию, улучшает производительность
- Brotli — сжатие контента на edge
- Rate Limiting — ограничение запросов с одного IP (план Pro)
- Bot Fight Mode — базовая защита от ботов (бесплатно)
Частые ошибки
- SSL/TLS режим "Flexible" — трафик между Cloudflare и сервером идёт по HTTP (небезопасно). Использовать "Full (strict)"
- Не настроить firewall на сервере: разрешить входящие подключения только с IP-диапазонов Cloudflare
- Кэшировать HTML-страницы без инвалидации после деплоя — пользователи видят старую версию