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

  1. Добавить сайт → Cloudflare автоматически сканирует DNS
  2. Изменить NS-серверы домена на cloudflare NS
  3. Включить Proxy (оранжевое облачко) для A-записей — трафик идёт через Cloudflare
  4. 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-страницы без инвалидации после деплоя — пользователи видят старую версию

Связанные темы

Ресурсы