Cloudflare — це глобальна мережа, яка діє як посередник між вашим сервером і користувачами. Трафік проходить через найближчий дата-центр Cloudflare (300+ точок присутності), що прискорює завантаження і фільтрує шкідливі запити до їх потрапляння на ваш сервер.
Що робить Cloudflare
- CDN — кешує статичний контент на серверах по всьому світу
- DDoS-захист — автоматично блокує атаки обсягом до терабіт
- DNS — швидкий авторитетний DNS з TTL від 1 хвилини
- SSL/TLS — безкоштовний HTTPS без сертифіката на сервері
- Файрвол — правила блокування за IP, країною, User-Agent
- Оптимізація — мініфікація JS/CSS/HTML, стиснення зображень
Плани Cloudflare
| План | Ціна | Ключові фічі |
|---|---|---|
| Free | $0 | CDN, DDoS L3/L4, SSL, базовий WAF, 3 Page Rules |
| Pro | $20/міс | WAF OWASP, Image Optimization, 20 Page Rules |
| Business | $200/міс | Custom WAF, 100% SLA, PCI DSS |
| Enterprise | За запитом | Виділені IP, кастомний захист |
Як Cloudflare прискорює сайт
- Користувач запитує example.com
- DNS повертає IP найближчого POP Cloudflare
- Cloudflare віддає кешований контент (статику) без звернення до сервера
- Динамічні запити проксуються на ваш сервер через оптимізований канал
Реальний IP сервера прихований
Коли ваш домен підключений до Cloudflare в режимі «Proxied» (помаранчева хмара), реальний IP сервера не видно в DNS. Це ускладнює прямі DDoS-атаки на ваш сервер.
Типові помилки під час підключення
| Помилка | Причина | Що робити |
|---|---|---|
| Error 521: Web Server Is Down | Cloudflare не може достукатися до сервера — вебсервер впав або файрвол блокує IP Cloudflare | Перевірте, чи запущено Nginx/Apache, і дозвольте діапазони IP Cloudflare у файрволі |
| Error 522: Connection Timed Out | Сервер не відповідає за відведений час — перевантажений або порт 80/443 закритий | Перевірте навантаження сервера і правила iptables/ufw для портів 80 і 443 |
| Error 525: SSL Handshake Failed | Не вдалося встановити TLS-з'єднання між Cloudflare і origin-сервером | Перевірте термін дії SSL-сертифіката на сервері та режим SSL/TLS у Cloudflare |
| ERR_TOO_MANY_REDIRECTS у браузері | Режим SSL/TLS «Flexible», а сервер сам редиректить HTTP на HTTPS — виникає цикл | Змініть режим на «Full» або «Full (strict)» у розділі SSL/TLS |
| SSL_ERROR_RX_RECORD_TOO_LONG у браузері | На порту 443 сервера й досі працює звичайний HTTP, а не HTTPS, якого чекає Cloudflare | Налаштуйте валідний HTTPS на origin-сервері або тимчасово перемкніть режим на «Flexible» |
Порівняння Cloudflare з альтернативами
| Варіант | CDN | DDoS-захист | Поріг входу |
|---|---|---|---|
| Cloudflare (Free) | Так, 300+ точок присутності | Увімкнено без обмежень за трафіком | Безкоштовно, потрібна лише зміна NS-серверів |
| Пряме підключення без CDN | Немає | Лише засобами хостингу | Не потребує налаштування, але сервер вразливий напряму |
| Інший CDN (наприклад BunnyCDN) | Так, платний за трафіком | Базовий, без окремого WAF на безкоштовному тарифі | Від кількох центів за ГБ трафіку |
Коли Cloudflare не підходить
- Застосунку потрібні довготривалі WebSocket-з'єднання зі складною маршрутизацією — на безкоштовному плані можливі обриви, для стабільності потрібен план Enterprise
- Регуляторні вимоги забороняють передавати трафік через інфраструктуру третьої сторони поза юрисдикцією — Cloudflare тут не підійде взагалі
- Потрібен повний контроль над TLS-термінацією і власними шифрами на межі мережі — проксування через Cloudflare цього не дає
- Сайт уже стоїть за іншим CDN або балансувальником, і подвоєння проксі-шарів лише ускладнить діагностику проблем
Покрокове підключення домену описано у статті «Підключення сайту до Cloudflare: покрокова інструкція», а деталі DDoS-захисту — у статті «DDoS-захист Cloudflare: як працює і як налаштувати».
Перевірка результату
Після підключення домену переконайтеся, що трафік справді йде через Cloudflare:
# NS-сервери домену мають бути cloudflare
dig NS example.com +short
# Заголовок cf-ray підтверджує проксування через Cloudflare
curl -sI https://example.com | grep -i "cf-ray"
# Перевірка реальної IP-адреси у заголовках відповіді (не повинна збігатися з origin)
curl -sI https://example.com | grep -i "server"
# SSL-сертифікат має бути випущений для домену, а не самопідписаний
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -issuer
Якщо потрібен доступ до сервера взагалі без відкритих портів, наступний крок — стаття «Cloudflare Tunnel: доступ до сервера без публічної IP».