Dropping Cloudflare for Bunny.net
Знаете, что объединяет полмиллиона сайтов, которые однажды легли из-за сбоя одного сервиса? Правильно — все они зависели от одной американской компании.
Cloudflare — это монстр. Безумно щедрый бесплатный тариф, огромная инфраструктура, фичи на любой вкус. Но есть нюанс: когда что-то идёт не так у Cloudflare, об этом пишут новости. Когда Cloudflare решит, что вам не нравится их политика — ваш сайт просто не откроется. Один IP-адрес, одна точка отказа, одно решение. Звучит как проблема?
Автор статьи на jola.dev Jola решил, что это проблема. И нашёл альтернативу.
Почему Cloudflare — это риск
Cloudflare обрабатывает трафик невообразимого количества сайтов. Это удобно, пока всё работает. Но представьте: одна ошибка конфигурации — и добрая треть интернета недоступна. Так уже было. И будут ещё.
Помимо технических рисков, есть политический. Cloudflare — американская компания. Американские законы иногда требуют странного. И история Cloudflare знает примеры, когда сервис отключал клиентов «по убеждениям».
Для личного блога это может быть не критично. Но когда ты строишь инфраструктуру, хочется меньше зависимостей от одного игрока.
Bunny.net — европейский вызов
Bunny.net — это CDN (Content Delivery Network — сеть доставки контента, серверы по всему миру ускоряют загрузку сайта)-компания из Словении. Европейская. Их сеть точек присутствия (PoP, Point of Presence — точка присутствия сервиса в городе/регионе) меньше, чем у Cloudflare, но по скорости и производительности они конкурируют на равных.
Что важно: Bunny.net работает по модели pay-as-you-go. Платите за то, что используете. Для большинства сайтов — копейки в месяц. Минимальный платёж — доллар, но это честная цена за то, чтобы перестать быть «продуктом» и стать клиентом.
СРАВНЕНИЕ СЕРВИСОВ
───────────────────
Cloudflare Bunny.net
───────── ─────────
Базовая цена бесплатно от $1/мес
Сеть PoP огромная средняя
Производительность ████████░░ █████████░
Локация HQ США 🇺🇸 Словения 🇸🇮
Модель оплаты фримиум pay-as-you-go
Зависимость критическая низкая
Как переехать: пошаговая инструкция
Автор подробно разобрал процесс миграции. Вот суть.
Шаг 1: Создаём Pull Zone
Pull Zone (зона вытягивания — основной механизм CDN: серверы сами забирают контент с вашего сайта и раздают посетителям) — это основной механизм CDN. Вы заходите в панель Bunny.net, создаёте зону и указываете адрес вашего сервера (origin). Система будет кешировать контент на своих серверах по всему миру.
Пример настройки:
- Имя зоны — что-то осмысленное (название сайта)
- Origin URL — адрес вашего сервера (IP или домен)
- Host Header — если на сервере несколько приложений, нужен заголовок хоста (автор использует Phoenix, поэтому указал jola.dev)
- Tier — Standard
- Pricing Zones — можно отключить дорогие регионы, трафик перенаправится на ближайшую доступную зону
Шаг 2: Подключаем свой домен
В настройках зоны находите раздел Hostnames и добавляете свой домен. Bunny.net выдаёт CNAME-запись (DNS-запись которая связывает домен с другим доменом), которую вы прописываете у регистратора. После DNS-пропагации (распространение DNS-настроек по всем серверам интернета — занимает от нескольких часов до суток) нажимаете «Verify & Activate SSL» — и готово. Ваш сайт теперь ходит через CDN.
Шаг 3: Настраиваем кеширование
Bunny.net по умолчанию уважает заголовки Cache-Control (заголовок который говорит браузеру и CDN как долго можно хранить файл в кеше) от вашего сервера. Если они настроены правильно — всё работает из коробки.
Если нет — включаете Smart Cache (умное кеширование — автоматически определяет что можно кешировать, а что нет). Это умный режим: кешируются картинки, CSS, JS, а HTML страницы — нет. Подходит для большинства случаев.
Автор пошёл дальше. Он кеширует даже HTML. За счёт этого страницы загружаются молниеносно. Для этого он добавил в свой роутер (Phoenix, Elixir) промежуточный слой с заголовком:
cache-control: public, s-maxage=86400, max-age=0
Это означает: кешировать на CDN (CDN-edge) на сутки, а в браузере — не кешировать. Результат — минимальное время отклика.
Единственный минус: после публикации нового поста нужно вручную очистить кеш зоны.
Полезные мелочи, которые стоит включить
Force SSL — редирект на HTTPS. Мелочь, но приятно.
Origin Shield (прослойка между CDN и вашим сервером — уменьшает нагрузку на ваш сайт) — защита вашего сервера. Все edge-серверы (сервер на краю сети — ближайший к пользователю сервер CDN) сначала обращаются к ближайшей shield-локации, и только если там пусто — летят к вам. Меньше нагрузки на origin.
Stale Cache (устаревший кеш — отдаётся когда ваш сайт недоступен) — два чекбокса: «Serve stale while origin offline» и «Serve stale while updating». CDN будет отдавать устаревший контент, если ваш сервер недоступен или обновляется. Для посетителей это незаметно.
Edge Rule для редиректа (правила для edge-серверов позволяют управлять трафиком без изменения кода сайта) — у каждой Pull Zone есть автоматический домен вроде `website.b-cdn.net`. Поисковики могут его индексировать и создавать дубли. Настраиваете Edge Rule: любой запрос на этот адрес редиректится на ваш настоящий домен. Готово.
ЗАПРОС ЧЕРЕЗ CDN
────────────────
Пользователь ──▶ Edge-сервер (ближайший PoP)
│
▼
Есть в кеше? ──▶ Да ──▶ Отдаём контент
│
Нет
│
▼
Origin Shield (кеширующий узел)
│
▼
Есть в Shield? ──▶ Да ──▶ Кешируем у себя, отдаём
│
Нет
│
▼
Ваш сервер
(origin)
Что ещё умеет Bunny.net
Автор честно признаёт: он описал только базовую настройку. Дальше идут:
- Edge Rules (правила для edge-серверов позволяют управлять трафиком без изменения кода сайта)
- Firewall и Shield для защиты
- Видеохостинг и стриминг
- Edge Scripting и edge-контейнеры (выполнение кода прямо на серверах CDN вместо вашего сервера)
- S3-совместимое хранилище (облачное хранилище файлов по стандарту Amazon S3)
Отдельно отмечена панель статистики: можно увидеть каждый запрос, чётко видно, что кешируется, а что нет. Это пригодится при отладке.
Выводы
Bunny.net — не идеал. Их сеть меньше, бесплатного тарифа нет, придётся платить пусть символический доллар. Но вы получаете европейскую компанию вместо американского монополиста, прозрачную модель оплаты и инструмент, который закрывает 90% задач Cloudflare для персональных проектов.
Автор статьи доволен переходом и постепенно мигрирует остальные проекты. Мне самому эта история интересна: CDN — это часто то, что ставят и забывают. Но когда забываешь проверить зависимости — получаешь сюрприз в самый неподходящий момент.
Ссылки
Дмитрий Полухин — продуктовый дизайнер. Пишу про разработку, AI и дизайн интерфейсов. Обо мне, контакты и профили.