Knowledge Base

Настройка Cloudflare для собственного сайта

Как работает Cloudflare

Категория: CDN · Риск: low

Как работает Cloudflare

Cloudflare выступает обратным прокси: пользователи подключаются к серверам Cloudflare, а Cloudflare — к вашему origin-серверу. Это даёт:

Порядок подключения

1. Зарегистрируйтесь на cloudflare.com, добавьте домен 2. Cloudflare сканирует существующие DNS-записи 3. Смените NS-серверы у регистратора на указанные Cloudflare 4. Дождитесь распространения NS (до 48 ч, обычно быстрее) 5. Включите проксирование (оранжевое облако) для нужных записей

Режимы SSL/TLS

| Режим | Описание | Рекомендация | |-------|---------|--------------| | Off | HTTP везде | Никогда | | Flexible | HTTPS клиент↔CF, HTTP CF↔сервер | Только если нет SSL на сервере | | Full | HTTPS везде, сертификат не проверяется | Не рекомендуется | | Full (strict) | HTTPS везде, валидный сертификат | **Рекомендуется** |

Разрешить только IP Cloudflare на сервере (Nginx)

# /etc/nginx/conf.d/cloudflare.conf
# Обновлённый список: https://www.cloudflare.com/ips/

allow 173.245.48.0/20;
allow 103.21.244.0/22;
allow 103.22.200.0/22;
allow 103.31.4.0/22;
allow 141.101.64.0/18;
allow 108.162.192.0/18;
allow 190.93.240.0/20;
allow 188.114.96.0/20;
allow 197.234.240.0/22;
allow 198.41.128.0/17;
allow 162.158.0.0/15;
allow 104.16.0.0/13;
allow 104.24.0.0/14;
allow 172.64.0.0/13;
allow 131.0.72.0/22;
# IPv6
allow 2400:cb00::/32;
allow 2606:4700::/32;
allow 2803:f800::/32;
allow 2405:b500::/32;
allow 2405:8100::/32;
allow 2a06:98c0::/29;
allow 2c0f:f248::/32;
deny all;

Page Rules / Transform Rules

# Принудительный HTTPS (делается через настройку SSL, не Page Rules)
# Кэширование статики
/*.css → Cache Level: Cache Everything, Edge Cache TTL: 1 month
/*.js  → Cache Level: Cache Everything, Edge Cache TTL: 1 month
/*.png → Cache Level: Cache Everything, Edge Cache TTL: 1 month

Firewall Rules (примеры)

# Блокировать запросы без User-Agent
(not http.request.headers["user-agent"][0] exists) → Block

# Challenged подозрительные страны
(ip.geoip.country in {"CN" "RU" "KP"} and not ip.src in $whitelist) → Managed Challenge

# Защита /admin
(http.request.uri.path contains "/admin" and not ip.src in $office_ips) → Block