Menu
Hosting Domeny VPS SSL Kalkulator Porównania FAQ
Aktywne kody
Wszystkie kody rabatowe

BunnyCDN - konfiguracja Pull Zone, SSL i optymalizacja WordPress

Opublikowano: 10 kwietnia 2026 · Kategoria: Wydajność / CDN

BunnyCDN to europejski CDN (Słowenia) z konkurencyjnymi cenami, prostym panelem i ponad 120 serwerami brzegowymi. W porównaniu do Cloudflare Free, BunnyCDN faktycznie cachuje treść i płacisz tylko za transfer - bez dodatkowych limitów. Ten artykuł pokazuje jak skonfigurować Pull Zone dla dowolnej strony, włączyć SSL, ustawić reguły cache przez Bunny Rules i zintegrować CDN z WordPress przez oficjalny plugin.

Tworzenie Pull Zone - konfiguracja podstawowa

Pull Zone to konfiguracja CDN wskazująca na twój serwer źródłowy (origin). BunnyCDN będzie pobierał z originu i cachował na swoich serwerach brzegowych.

  1. Zaloguj się na panel.bunny.net i przejdź do CDN → Pull Zones → Add Pull Zone.
  2. Wpisz nazwę (np. mysite-cdn) i Origin URL (adres twojego serwera, np. https://mysite.example.com).
  3. Wybierz regiony - Europa zawsze aktywna, pozostałe opcjonalnie (wyższy koszt/GB).
  4. Po stworzeniu dostaniesz URL CDN w formacie mysite-cdn.b-cdn.net - możesz go użyć bezpośrednio lub dodać własną domenę (Custom Hostname).

Custom Hostname i SSL

Zamiast *.b-cdn.net możesz używać własnej subdomeny jak cdn.example.com. BunnyCDN oferuje darmowy SSL przez Let's Encrypt lub możesz wgrać własny certyfikat.

# 1. W panelu BunnyCDN: Pull Zone → Hostnames → Add Hostname
# Wpisz: cdn.example.com

# 2. W DNS swojej domeny dodaj rekord CNAME:
# cdn.example.com → mysite-cdn.b-cdn.net

# 3. W BunnyCDN: Enable Free Certificate (Let's Encrypt) lub Upload Custom
# Let's Encrypt: automatyczne odnawianie co 60 dni

# 4. Wymusz HTTPS w ustawieniach Pull Zone:
# Security → Force SSL: ON

# 5. Sprawdz SSL
curl -I https://cdn.example.com/wp-content/uploads/logo.png
# Oczekiwany header: cdn-cache: HIT (przy pierwszym zapytaniu zwykle MISS)

Bunny Rules - zaawansowane reguły cache

Bunny Rules to system reguł warunkowych - podobny do Cloudflare Rules. Pozwala ustawić własne TTL, wymuszać/blokować cache, przekierowywać, modyfikować nagłówki i optymalizować obrazy. Konfiguracja w panelu: Edge Rules.

  • Długi TTL dla statycznych zasobów - pliki CSS/JS/images z hash w nazwie (fingerprinting) mogą mieć TTL=1rok. Reguła: URL path matches *.js lub *.css → Cache TTL = 31536000s.
  • Pomijaj cache dla API - Reguła: URL path starts with /api/ → Bypass Cache.
  • Blokuj hotlinking - Reguła: Request Header Referer does not match example.com AND URL path ends with .jpg → Block Request.
  • Przekierowanie www → bez-www - Reguła: Hostname matches www.example.com → Redirect to https://example.com/${PathAndQuery}.
# Bunny Rules przez API (REST) - przyklad zmiany TTL
curl -X POST "https://api.bunny.net/pullzone/TWOJ_ZONE_ID/edgerules/addOrUpdate" \
  -H "AccessKey: TWOJ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "Enabled": true,
    "Description": "Long TTL for images",
    "Triggers": [
      {
        "Type": 0,
        "PatternMatchingType": 0,
        "PatternMatches": ["*.jpg", "*.png", "*.webp", "*.gif"]
      }
    ],
    "Actions": [
      {
        "Type": 9,
        "Parameter1": "31536000"
      }
    ]
  }'

Integracja z WordPress - plugin Bunny.net

Oficjalny plugin Bunny.net (dawniej CDN Enabler) automatycznie przepisuje URL statycznych zasobów na adresy Pull Zone. Instalacja przez panel WP-Admin:

# WP-Admin → Plugins → Add New → szukaj "Bunny.net"
# Zainstaluj i aktywuj plugin "Bunny.net" (cdn.bunny.net)

# Konfiguracja: Settings → Bunny.net CDN
# Pull Zone Hostname: cdn.example.com  (lub mysite-cdn.b-cdn.net)
# Rewrite URLs for:
#   - wp-content/uploads  ✓  (media biblioteki WP - bezwzględnie)
#   - wp-content/themes   ✓  (CSS/JS motywu)
#   - wp-content/plugins  ✓  (zasoby pluginow)
# Excluded file types: php (nie przepisuj skryptow PHP)

# Weryfikacja: sprawdz źródło strony
curl -s https://example.com | grep -o 'cdn.example.com[^"]*' | head -5
# Oczekiwany wynik: URL obrazow przepisane na cdn.example.com/...
# Alternatywnie: manualna konfiguracja przez wp-config.php (bez pluginu)
# Dodaj do wp-config.php:

define('WP_CONTENT_URL', 'https://cdn.example.com/wp-content');

# LUB: przepisanie przez .htaccess (Apache)
# RewriteEngine On
# RewriteCond %{HTTP_REFERER} !^https://cdn.example.com [NC]
# RewriteRule ^wp-content/uploads/(.*) https://cdn.example.com/wp-content/uploads/$1 [R=301,L]

BunnyCDN z LiteSpeed Cache lub WP Rocket

Jeśli strona ma już wtyczkę cache, zwykle nie potrzebujesz osobnego pluginu Bunny.net do samego przepisywania adresów. Obie popularne wtyczki mają pole na adres CDN i same podmieniają URL zasobów statycznych:

  • LiteSpeed Cache - zakładka CDN, opcja CDN Mapping: wpisujesz adres Pull Zone (np. https://cdn.twojadomena.pl/) i zaznaczasz, które typy plików (obrazy, CSS, JS) mają iść przez CDN. Cache HTML nadal obsługuje serwer LiteSpeed.
  • WP Rocket - zakładka CDN: włączasz CDN i w polu CNAME podajesz hostname Pull Zone. Szczegóły ustawień wtyczki opisujemy w poradniku WP Rocket - konfiguracja cache.

Zasada praktyczna: adresy na CDN przepisuje tylko jedno narzędzie, nie plugin Bunny.net i WP Rocket jednocześnie.

Ustawienia cache w Pull Zone: Cache Expiration Time i Browser Cache

Zanim zaczniesz pisać Edge Rules, sprawdź dwa podstawowe ustawienia w zakładce Caching Pull Zone.

  • Cache Expiration Time - jak długo plik leży w cache serwera brzegowego. Domyślnie BunnyCDN respektuje nagłówki Cache-Control wysyłane przez origin. Możesz je nadpisać stałą wartością, co przydaje się, gdy hosting wysyła krótkie albo zerowe czasy cache dla plików statycznych.
  • Browser Cache Expiration Time - jak długo przeglądarka użytkownika trzyma plik u siebie. To osobna wartość niż czas cache w CDN.
  • Query string i cookies - w tej samej zakładce decydujesz, czy parametry w adresie (np. ?ver=6.5) tworzą osobne wersje pliku w cache oraz czy CDN ma usuwać ciasteczka z odpowiedzi originu. Te dwie opcje najczęściej odpowiadają za niski współczynnik HIT.

Dla WordPressa bezpieczny punkt startowy to długi czas cache w CDN dla obrazów, CSS i JS oraz brak cache dla HTML, dopóki nie wiesz, jak strona zachowuje się dla zalogowanych użytkowników i koszyka WooCommerce. Szerszy kontekst warstw cache (strona, obiekt, CDN, przeglądarka) znajdziesz w artykule WordPress - optymalizacja cache.

Purge cache BunnyCDN - z panelu i przez API

Po podmianie pliku pod tym samym adresem (np. nowe logo jako logo.png) CDN dalej serwuje starą wersję, dopóki nie minie czas cache albo nie wyczyścisz go ręcznie. W panelu robisz to w Pull Zone → Purge Cache: całą strefę jednym kliknięciem albo wybrane adresy URL. Przy wdrożeniach automatycznych (CI/CD, skrypt deploy) wygodniej użyć API:

# Wyczyść całą Pull Zone (ID strefy widać w panelu i w URL panelu)
curl -X POST "https://api.bunny.net/pullzone/TWOJ_ZONE_ID/purgeCache" \
  -H "AccessKey: TWOJ_API_KEY"

# Wyczyść pojedynczy plik
curl -X POST "https://api.bunny.net/purge?url=https://cdn.example.com/images/logo.png" \
  -H "AccessKey: TWOJ_API_KEY"

Klucz API konta (AccessKey) daje pełny dostęp do wszystkich stref, więc trzymaj go w zmiennych środowiskowych lub sekretach CI, a nie w repozytorium.

Jak sprawdzić, czy BunnyCDN działa (cdn-cache HIT / MISS)

Najszybszy test to podejrzenie nagłówków odpowiedzi. Wykonaj zapytanie dwa razy pod rząd:

# Pobierz same naglowki pliku z CDN
curl -I https://cdn.example.com/wp-content/uploads/logo.png

# Najwazniejsze naglowki w odpowiedzi:
# server: BunnyCDN-...      -> zapytanie obsluzyl serwer brzegowy BunnyCDN (kod PoP)
# cdn-cache: MISS           -> pierwszy raz: plik pobrany z originu
# cdn-cache: HIT            -> kolejny raz: plik z cache PoP
# cache-control: ...        -> czas cache dla przegladarki

Jeśli drugie i trzecie zapytanie nadal zwraca MISS, przyczyną jest zwykle nagłówek Cache-Control: no-cache lub private z originu, ciasteczko ustawiane w odpowiedzi albo zmieniający się parametr w adresie.

Perma-Cache i Storage Zone

Perma-Cache to zaawansowana funkcja BunnyCDN - zapisuje cache na trwałe na dysku serwera brzegowego. Jeśli origin jest niedostępny, CDN serwuje stale dane. Wymaga powiązanej Storage Zone.

Storage Zone to wbudowany hosting plików BunnyCDN - alternatywa dla S3 z natywnym CDN delivery. Koszt: $0.02/GB/msc + CDN transfer. Możesz uploadować przez FTP, SFTP lub API REST.

# Upload pliku do Storage Zone przez API
curl -X PUT "https://storage.bunnycdn.com/TWOJA_ZONE/images/logo.png" \
  -H "AccessKey: TWOJ_STORAGE_KEY" \
  -H "Content-Type: image/png" \
  --data-binary @logo.png

# Plik dostepny przez CDN natychmiast:
# https://cdn.example.com/images/logo.png

# Listuj pliki
curl "https://storage.bunnycdn.com/TWOJA_ZONE/" \
  -H "AccessKey: TWOJ_STORAGE_KEY"

Kiedy co wybrać? Perma-Cache ma sens przy dużych bibliotekach mediów i originie, który bywa przeciążony lub niedostępny. Storage Zone wybierasz, gdy pliki w ogóle nie muszą leżeć na hostingu (np. pliki do pobrania, wideo, archiwa) i chcesz zwolnić miejsce oraz transfer na serwerze. Jeśli zależy ci głównie na ograniczeniu zapytań trafiających do originu z wielu PoP, zobacz też Origin Shield w CDN.

Bunny Optimizer - optymalizacja obrazów i plików w locie

Bunny Optimizer to dodatkowa, płatna usługa włączana per Pull Zone. Kompresuje i konwertuje obrazy (m.in. do WebP), pozwala zmieniać ich rozmiar parametrami w adresie URL i minifikuje CSS oraz JS.

Jeśli już generujesz WebP wtyczką WordPress lub w LiteSpeed Cache, nie włączaj obu mechanizmów naraz.

BunnyCDN vs Cloudflare - porównanie szczegółowe

Cecha BunnyCDN Cloudflare Free Cloudflare Pro
Cena transfer (EU) $0.005-0.01/GB Darmowy (bez limitu) Darmowy (bez limitu)
Cena miesięczna Pay per use (~$1-5 małe strony) $0 $25/msc
Cache HTML stron Tak (domyślnie off, włącz) Nie (tylko statyczne) Tak (Page Rules/Cache Rules)
WAF / DDoS Podstawowy (Edge Rules) Dobry (reguły OWASP) Bardzo dobry (managed rules)
Liczba PoP (EU) 40+ PoP w Europie 300+ PoP globalnie 300+ PoP globalnie
Storage CDN Tak (Storage Zone $0.02/GB/msc) Nie R2 (darmowy egress)
Optymalizacja obrazów Tak (Optimizer - WebP, resize) Nie (Polish: Pro+) Tak (Polish + WebP)
Najlepszy dla Media CDN, WordPress assets, Storage DNS, ochrona, podstawowy cache Pełne rozwiązanie CDN+WAF

Bunny CDN czy Cloudflare - kiedy który, a kiedy oba

  • Wybierz BunnyCDN, gdy głównym celem jest szybkie dostarczanie mediów i plików statycznych, potrzebujesz przewidywalnego rozliczenia za transfer, przechowywania plików (Storage Zone) albo nie chcesz przenosić DNS domeny do zewnętrznego dostawcy.
  • Wybierz Cloudflare, gdy liczy się ochrona: WAF, łagodzenie ataków DDoS, zarządzanie botami i darmowy plan na start. Cloudflare działa jako reverse proxy dla całej domeny, więc wymaga zmiany serwerów DNS. Więcej w artykule CDN w hostingu - Cloudflare.
  • Połącz oba, gdy chcesz ochrony Cloudflare dla domeny głównej i BunnyCDN dla mediów na subdomenie. Wtedy rekord CNAME cdn.twojadomena.pl w Cloudflare ustaw jako DNS only (szara chmurka).

Typowe problemy z BunnyCDN i jak je naprawić

Mixed content po włączeniu CDN

Przeglądarka blokuje zasoby ładowane przez http:// na stronie HTTPS. Upewnij się, że w pluginie lub wtyczce cache adres CDN zaczyna się od https://, certyfikat dla własnej subdomeny jest aktywny, a w Pull Zone włączone jest wymuszanie SSL. Zasady poprawnej konfiguracji certyfikatów opisujemy w poradniku jak skonfigurować SSL na hostingu.

Fonty i ikony nie ładują się (błąd CORS)

Pliki fontów (.woff2, .woff, .ttf) pobierane z innej domeny wymagają nagłówka Access-Control-Allow-Origin. W ustawieniach Pull Zone (sekcja nagłówków) włącz dodawanie nagłówków CORS dla rozszerzeń fontów albo dodaj ten nagłówek regułą Edge Rules. Po zmianie zrób purge, bo w cache mogą leżeć odpowiedzi bez nagłówka.

Podwójny cache: wtyczka WordPress i CDN

Po aktualizacji motywu CDN może nadal serwować stary CSS. Ustaw czyszczenie cache CDN razem z cache wtyczki (plugin Bunny.net lub integracja w wtyczce cache) albo korzystaj z plików z wersją w adresie, które zmieniają URL przy każdej aktualizacji.

Cookies i query string omijają cache

Parametry typu ?utm_source= czy ?fbclid= potrafią tworzyć tysiące unikalnych adresów, z których każdy jest najpierw MISS. Podobnie odpowiedzi ustawiające ciasteczka mogą nie trafiać do cache. Dla plików statycznych wyłącz uwzględnianie query string w kluczu cache (jeśli nie używasz parametrów do wersjonowania) i usuwaj ciasteczka z odpowiedzi. Dla HTML zachowaj ostrożność: tam ciasteczka często oznaczają sesję lub koszyk, których nie wolno cachować wspólnie dla wszystkich.

Najczęstsze pytania

Czym jest BunnyCDN i jak działa Pull Zone? +
BunnyCDN to Content Delivery Network z ponad 120 PoP (Points of Presence) na całym świecie. Pull Zone to konfiguracja w BunnyCDN wskazująca na twój serwer źródłowy (origin) - gdy użytkownik prosi o zasób przez BunnyCDN, serwer edge sprawdza cache. Jeśli brak (miss), pobiera z originu, cachuje i zwraca użytkownikowi. Przy kolejnych zapytaniach (hit) serwuje z cache lokalnego PoP - drastycznie niższe opóźnienia i odciążenie originu.
BunnyCDN vs Cloudflare - co wybrać dla WordPress? +
Cloudflare Free jest darmowy i świetny do ochrony DNS, WAF, podstawowego cache. Ale Cloudflare Free cachuje tylko statyczne pliki i nie cachuje stron WordPress (bez Page Rules lub Workers). BunnyCDN kosztuje od $0.005/GB (Europa) ale cachuje wszystko - strony HTML, zdjęcia, CSS, JS - i oferuje Perma-Cache (zapis na dysku edge nawet gdy origin padnie). Dla WordPress z dużym ruchem statycznych zasobów (CDN dla /wp-content/uploads/) BunnyCDN jest tańszy i prostszy do konfiguracji. Cloudflare wygrywa w bezpieczeństwie (DDoS, WAF, Bot Management).
Jak BunnyCDN radzi sobie z ceną w porównaniu z Cloudflare i Fastly? +
BunnyCDN jest jednym z najtańszych CDN: Europa $0.005-0.01/GB, USA $0.01/GB, Azja $0.03/GB. Cloudflare Free jest darmowy dla podstawowego użycia, ale Pro ($25/msc) jest droższy przy dużym transfer. Fastly i AWS CloudFront są 3-5x droższe niż BunnyCDN. KeyCDN jest podobny cenowo do BunnyCDN. BunnyCDN ma też zryczałtowane Storage Zone ($0.02/GB/msc) - tania alternatywa S3 do przechowywania plików z CDN delivery. Dla małych i średnich projektów BunnyCDN oferuje najlepszy stosunek ceny do jakości.
Jak skonfigurować BunnyCDN dla WordPress? +
Najprościej przez oficjalny plugin Bunny.net (dawniej CDN Enabler). Instalujesz plugin, wpisujesz URL Pull Zone z BunnyCDN, plugin automatycznie przepisuje URL statycznych zasobów (/wp-content/uploads/, /wp-content/themes/, /wp-content/plugins/) na adresy CDN. Alternatywnie: CDN Enabler lub WP Rocket CDN integration. Pamiętaj żeby SSL Pull Zone był włączony i certyfikat był ważny - mix HTTP/HTTPS powoduje błędy mixed content.
Co to jest domena b-cdn.net? +
b-cdn.net to domena techniczna BunnyCDN. Każda Pull Zone dostaje adres w formacie nazwa-strefy.b-cdn.net, pod którym od razu działa CDN z certyfikatem SSL. Jeśli w kodzie strony lub w narzędziach deweloperskich widzisz zasoby ładowane z *.b-cdn.net, oznacza to, że strona korzysta z BunnyCDN. Zamiast tego adresu możesz podpiąć własną subdomenę (np. cdn.twojadomena.pl) przez rekord CNAME.
Jak wyczyścić cache w BunnyCDN? +
Z panelu: Pull Zone → Purge Cache, gdzie możesz wyczyścić całą strefę albo pojedyncze adresy URL. Automatycznie: przez API, wysyłając POST na https://api.bunny.net/pullzone/ID_STREFY/purgeCache z nagłówkiem AccessKey (klucz API konta). Oficjalna wtyczka Bunny.net dla WordPress również potrafi czyścić cache z poziomu panelu WP.
Jak sprawdzić, czy plik jest serwowany z cache BunnyCDN? +
Wykonaj curl -I na adres pliku w CDN i znajdź nagłówek cdn-cache. Wartość HIT oznacza, że plik przyszedł z cache serwera brzegowego, MISS że edge musiał pobrać go z originu. Nagłówek server wskazuje dodatkowo, który PoP BunnyCDN obsłużył zapytanie.

Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.