Site Hızı & Performans

    BunnyCDN Kurulumu ve Yapılandırması

    Bunny pull zone oluşturma, alan adı bağlama ve önbellek ayarlarının pratik kurulumu.

    9 dk okuma Güncellendi: 25 Ağustos 2026

    CDN kullanmaya karar verdin ama Cloudflare'ın tüm trafiğini proxy'lemesini istemiyorsun; sadece görselleri, CSS ve JS dosyalarını uç sunuculara taşımak, DNS'i ve HTML'i kendi kontrolünde tutmak istiyorsun. Bunny bu senaryo için oldukça pratik bir seçenek: kullandığın kadar ödersin, kurulumu on beş dakika sürer ve alan adının nameserver'larını devretmek zorunda kalmazsın. BunnyCDN kurulumu esasen üç adımdan ibarettir; bir pull zone oluşturursun, ona kendi alt alan adını bağlarsın ve sitendeki varlık adreslerini o alt alan adına çevirirsin.

    Bu rehberde pull zone ile storage zone arasındaki farkı, adım adım kurulumu, özel alan adı ve ücretsiz SSL bağlamayı, önbellek süresi ile sorgu dizesi ayarlarını, edge rules ile özel kural yazmayı ve kurulum sonrası doğrulamayı anlatacağım. CDN'in genel çalışma mantığını henüz oturtmadıysan önce CDN nedir, nasıl çalışır yazısına göz atman bu rehberi çok daha anlamlı kılar.

    Pull Zone, Storage Zone ve Perma-Cache#

    Bunny panelinde karşına ilk çıkacak kavramlar bunlar ve doğru olanı seçmek kurulumun geri kalanını belirler.

    Pull zone, klasik CDN davranışıdır. Bunny'ye "origin'im https://firmaniz.com" dersin; bir dosya ilk kez istendiğinde uç sunucu onu senin sunucundan çeker, kullanıcıya verir ve kendinde saklar. Dosyaları ayrıca bir yere yüklemen gerekmez, sitendeki her şey olduğu gibi çalışır. Site varlıkları için doğru seçim budur.

    Storage zone, Bunny'nin kendi nesne depolamasıdır. Dosyaları FTP ya da API ile oraya yükler, pull zone'un origin'i olarak storage zone'u seçersin. Origin sunucun hiç devreye girmez. Büyük video dosyaları, yazılım paketleri ya da tamamen statik bir site için mantıklıdır. Storage zone'u birden fazla bölgeye çoğaltabilirsin.

    Perma-Cache, pull zone ile storage zone'un melez hâlidir: uç sunucuda önbelleğe alınan dosyalar kalıcı olarak bir storage zone'a da yazılır. Böylece bir dosya uç sunucudan düşse bile origin'e gidilmez, storage'dan alınır. Origin'i çok fazla yormak istemediğin, nadiren istenen ama büyük bir dosya kütüphanen varsa işe yarar.

    SenaryoDoğru seçimGerekçe
    WordPress sitesinin görsel/CSS/JS dosyalarıPull zoneSıfır bakım, mevcut yapı bozulmaz
    Tamamen statik site yayınıStorage zone + pull zoneOrigin sunucusuna hiç ihtiyaç yok
    Video kütüphanesiStorage zoneOrigin'den çekmek pahalı
    Büyük arşiv, seyrek erişimPull zone + Perma-CacheOrigin yükü minimumda kalır
    Ürün görselleri, çok sayıda küçük dosyaPull zoneKendiliğinden ısınır

    Çoğu site için doğru cevap sade bir pull zone'dur. Karmaşıklığı ihtiyaç doğmadan eklememeni öneririm.

    Adım Adım Pull Zone Oluşturma#

    Kurulum panelden şu sırayla yapılır:

    1. Bunny paneline gir, sol menüden CDN bölümünü aç ve Add Pull Zone butonuna bas.
    2. Name alanına kısa ve anlamlı bir isim yaz; bu isim <isim>.b-cdn.net biçiminde varsayılan adresin olacak.
    3. Origin Type olarak Origin URL seç ve kendi sitenin adresini gir: https://firmaniz.com. Origin'i HTTPS olarak vermek önemlidir, aksi hâlde uç sunucu ile origin arasındaki trafik şifresiz akar.
    4. Pricing Zones bölümünde hangi kıtalarda hizmet vereceğini seç. Ziyaretçilerin yalnızca Avrupa ve Türkiye'deyse uzak bölgeleri kapatmak faturanı belirgin biçimde düşürür.
    5. Zone'u oluştur. Birkaç saniye içinde <isim>.b-cdn.net adresi çalışmaya başlar.

    Kurulumun doğru olduğunu hemen test et. Sitendeki mevcut bir görselin yolunu alıp Bunny adresine yapıştır:

    # Ayni dosyayi iki kez iste: ikincisinde HIT bekleriz
    curl -sSI https://ornekzone.b-cdn.net/wp-content/uploads/2026/logo.png \
      | grep -iE 'cdn-cache|server|cache-control|age'
    
    # Ornek cikti:
    # server: BunnyCDN-FR1-1023
    # cdn-cache: MISS
    # cache-control: public, max-age=31536000
    

    İlk istekte MISS, ikinci istekte HIT görmen gerekir. MISS ısrarla devam ediyorsa ya origin Cache-Control göndermiyordur ya da yanıtta çerez vardır; ikisini de aşağıda ele alıyorum.

    Özel Alan Adı ve Ücretsiz SSL#

    b-cdn.net adresini doğrudan kullanmak teknik olarak çalışır ama önerilmez: markanın dışında bir alan adıdır, sağlayıcı değiştirdiğinde tüm bağlantıların kırılır ve tarayıcı için tamamen ayrı bir kaynak olarak davranır. Bunun yerine kendi alt alan adını bağla.

    Önce DNS tarafında bir CNAME kaydı oluştur:

    ; Statik varliklar icin CDN alt alan adi
    cdn.firmaniz.com.   3600   IN   CNAME   ornekzone.b-cdn.net.
    

    Cloudflare kullanıyorsan bu kaydı gri bulut (proxy kapalı) olarak bırak; aksi hâlde trafik iki CDN üzerinden art arda geçer ve hem gecikme artar hem de önbellek davranışı teşhis edilemez hâle gelir.

    Sonra Bunny panelinde pull zone'un Hostnames sekmesine gel, Add Hostname ile cdn.firmaniz.com adresini ekle. DNS kaydı yayıldıktan sonra aynı satırdaki Load Free SSL Certificate düğmesine bas; Bunny senin adına ücretsiz bir sertifika alır ve yeniler. Sertifika alınamıyorsa neredeyse her zaman sebep CNAME'in henüz yayılmamış olmasıdır; birkaç dakika bekleyip tekrar dene.

    Son olarak Force SSL seçeneğini açarak HTTP isteklerinin HTTPS'e yönlendirilmesini sağla. Böylece karışık içerik (mixed content) uyarısı almazsın.

    Bu noktadan sonra sitendeki varlık adreslerini cdn.firmaniz.com ile değiştirmen gerekir. WordPress kullanıyorsan çoğu önbellek eklentisinin "CDN URL" ya da "CNAME" alanına bu adresi yazman yeterlidir. Kendi uygulamanı yazıyorsan varlık taban adresini bir yapılandırma değişkeninden okumak en temizidir; ileride sağlayıcı değiştirdiğinde tek satır değiştirirsin.

    Önbellek Süresi, Sorgu Dizesi ve Çerezler#

    Pull zone'un Caching sekmesi işin kalbidir. Burada dört ayarı doğru yapmak, hit oranını doğrudan belirler.

    Cache Expiration Time. İki seçeneğin var: origin'in Cache-Control başlığına uymak ya da sabit bir süre dayatmak. Origin başlıklarını doğru yönetiyorsan birinci seçenek daha temizdir, çünkü tek bir gerçek kaynağın olur. Origin'in başlık göndermediği ya da yanlış gönderdiği durumlarda sabit süre kurtarıcıdır. Başlıkların anlamını netleştirmek istersen Cache-Control başlıkları rehberine bak.

    Browser Cache Expiration. Ziyaretçinin tarayıcısında dosyanın ne kadar duracağını belirler. Hash'li dosya adları kullanıyorsan uzun tut; kullanmıyorsan kısa tut, yoksa güncellediğin bir CSS dosyası kullanıcıda günlerce eski kalır.

    Query String yönetimi. Varsayılan davranışta stil.css?v=3 ile stil.css?v=4 ayrı iki önbellek kaydıdır. Reklam parametreleri (utm_source, fbclid) varlık adreslerine bulaşırsa her tıklama yeni bir kayıt üretir. Bunny'de sorgu dizesini tamamen yok sayabilir ya da yalnızca belirli parametrelerin dikkate alınmasını sağlayabilirsin. Sürüm parametresiyle önbellek kırıyorsan yok sayma seçeneğini açma; yoksa güncellemelerin uç sunucuya hiç yansımaz.

    Çerez davranışı. Origin yanıtında Set-Cookie varsa çoğu CDN o yanıtı önbelleğe almaz. Statik dosyalara çerez basmak gereksizdir ve genellikle sunucu yapılandırmasından kaynaklanır. Origin tarafında bunu kesmek en doğru çözümdür:

    # Statik dosyalarda cerez basma, uzun omur ver
    location ~* \.(jpg|jpeg|png|webp|avif|gif|svg|ico|css|js|woff2)$ {
        add_header Cache-Control "public, max-age=31536000, immutable";
        proxy_hide_header Set-Cookie;
        access_log off;
    }
    

    Hit oranını yükseltmenin diğer yollarını CDN cache hit oranını artırma yazısında ayrıntılı biçimde topladım.

    Edge Rules ile Özel Davranış#

    Bunny'nin Edge Rules özelliği, belirli koşullarda farklı davranmanı sağlar. Mantık basittir: bir tetikleyici tanımlarsın (URL kalıbı, istek başlığı, ülke, dosya uzantısı) ve bir eylem seçersin.

    Pratikte en çok işe yarayan üç kural şunlardır:

    1. Belirli bir dizini önbelleğe alma. Örneğin /wp-admin/ ya da /api/ altındaki her şeye "Bypass Cache" uygula. Bu yolların uç sunucuda saklanması hem gereksiz hem risklidir.
    2. Belirli uzantılara farklı süre ver. Görsellere çok uzun, JSON dosyalarına çok kısa önbellek süresi tanımlamak için "Override Cache Time" eylemini kullan.
    3. Güvenlik başlığı ekle. Yanıta X-Content-Type-Options: nosniff gibi bir başlık eklemek için "Set Response Header" eylemi yeterlidir.

    Bunların yanında iki koruma ayarını da açmanı öneririm. Hotlink Protection bölümünde izin verilen referrer listesine kendi alan adını yazarsan başka siteler senin görsellerini kendi sayfalarında kullanıp faturanı şişiremez. Block Root Path Access ise CDN adresinin doğrudan ana sayfa gibi davranmasını engeller; bu, arama motorlarının CDN alt alan adını ayrı bir site sanmasının önüne geçer.

    Bir de robots.txt tarafını unutma. CDN alt alan adı üzerinden HTML servis etmiyorsan sorun yoktur; ediyorsan aynı içeriğin iki adresten erişilebilir olmaması için kanonik etiketlerinin doğru kurulduğundan emin ol.

    Doğrulama ve Sorun Giderme#

    Kurulum bitti sanıp geçme; kısa bir doğrulama listesi seni ileride saatlerce uğraşmaktan kurtarır.

    # 1) Ozel alan adi calisiyor ve sertifika gecerli mi
    curl -sSI https://cdn.firmaniz.com/wp-content/uploads/2026/logo.png | head -1
    
    # 2) Ikinci istekte HIT geliyor mu
    curl -sSI https://cdn.firmaniz.com/wp-content/uploads/2026/logo.png | grep -i cdn-cache
    
    # 3) Hangi uc sunucu karsiladi
    curl -sSI https://cdn.firmaniz.com/wp-content/uploads/2026/logo.png | grep -i '^server'
    
    # 4) Sikistirma aktif mi
    curl -sS -H 'Accept-Encoding: br,gzip' -o /dev/null -w '%{size_download}\n' \
      https://cdn.firmaniz.com/assets/app.css
    

    En sık karşılaşılan sorunlar ve sebepleri şöyle:

    BelirtiMuhtemel sebepÇözüm
    Sürekli MISSOrigin no-cache veya Set-Cookie gönderiyorOrigin başlıklarını düzelt
    502 / 522 benzeri hataOrigin CDN IP'lerini engelliyorGüvenlik duvarında Bunny IP'lerine izin ver
    Sertifika hatasıCNAME yayılmamışDNS'i doğrula, sertifikayı yeniden yükle
    Eski dosya geliyorTTL dolmamışPurge et ya da dosya adına sürüm ekle
    Font yüklenmiyorCORS başlığı yokOrigin'de Access-Control-Allow-Origin ekle
    Fatura beklenenden yüksekUzak bölgeler açık, hotlink varBölgeleri daralt, hotlink korumasını aç

    Font sorunu özellikle sık görülür ve teşhisi zordur, çünkü tarayıcı konsolunda yalnızca bir CORS uyarısı belirir. Origin tarafında şu satır meseleyi çözer:

    location ~* \.(woff2|woff|ttf|otf|eot)$ {
        add_header Access-Control-Allow-Origin "*";
        add_header Cache-Control "public, max-age=31536000, immutable";
    }
    

    Dosya güncellediğinde önbelleği temizlemek için panelden tek URL purge yapabilir ya da dağıtım betiğine API çağrısı ekleyebilirsin. En sağlıklı yöntem ise dosya adına içerik hash'i koymaktır; adı değiştiği için eski kopyanın temizlenmesine hiç gerek kalmaz.

    Sıkça Sorulan Sorular#

    BunnyCDN ücretsiz mi, aylık ne kadar tutar#

    Ücretsiz bir plan yoktur; kullandığın kadar ödersin ve fiyat aktarılan veri miktarı ile bölgeye göre değişir. Küçük bir kurumsal sitenin aylık maliyeti genellikle çok düşük kalır, ancak video veya büyük indirme dağıtıyorsan trafiği önceden tahmin etmen gerekir. Faturayı kontrol altında tutmanın en pratik yolu, ziyaretçin olmayan kıtaların fiyat bölgelerini kapatmak ve hotlink korumasını açmaktır.

    Cloudflare ile Bunny'i birlikte kullanabilir miyim#

    Kullanabilirsin ama CDN alt alan adının Cloudflare tarafında proxy'lenmemesi gerekir. cdn.firmaniz.com kaydını gri bulutta bırak; aksi hâlde trafik iki ayrı CDN'den art arda geçer, gecikme artar ve bir sorun çıktığında hangi katmanın sebep olduğunu ayırt edemezsin. Yaygın kurulum şudur: HTML ve DNS Cloudflare'da, statik varlıklar Bunny'de.

    Pull zone mu storage zone mu seçmeliyim#

    Mevcut bir siten varsa ve dosyalar zaten sunucundaysa pull zone seç; hiçbir şey yüklemen gerekmez, kurulum dakikalar sürer. Storage zone'u yalnızca origin sunucundan çekmenin pahalı olduğu durumlarda ya da tamamen statik bir yayın yapıyorsan tercih et. Kararsızsan pull zone ile başla; ihtiyaç doğarsa sonradan storage eklemek zor değildir.

    CDN kurduktan sonra sitem neden hâlâ hızlanmadı#

    Muhtemelen darboğaz statik dosyalarda değil. CDN yalnızca kendisine yönlendirdiğin varlıkları hızlandırır; HTML hâlâ origin'den geliyorsa ve sayfa üretimi yavaşsa toplam süre pek değişmez. Önce sunucu tarafındaki üretim süresini ölç, gerekirse sunucu seviyesinde önbellekleme kur, sonra CDN'in katkısını değerlendir.

    Dosyayı güncelledim ama eski hâli geliyor, ne yapmalıyım#

    Uç sunucudaki kopyanın önbellek süresi henüz dolmamıştır. Bunny panelinden ilgili adresi purge edebilir ya da tüm zone'u temizleyebilirsin. Kalıcı çözüm, dosya adına içerik tabanlı bir sürüm eklemektir: app.a1b2c3.css gibi bir isim değiştiğinde tarayıcı ve CDN yeni dosyayı zaten farklı bir kaynak olarak görür ve temizlemeye gerek kalmaz.

    CDN alt alan adı SEO açısından sorun çıkarır mı#

    Yalnızca statik varlıkları sunuyorsan sorun çıkarmaz; arama motorları görsel ve stil dosyalarının farklı bir alt alan adından gelmesini olağan karşılar. Sorun, aynı HTML içeriğinin hem ana alan adından hem CDN adresinden erişilebilir olmasıdır. Bunu engellemek için CDN üzerinden HTML servis etme ve panelde kök yol erişimini kapat.

    Kapanış#

    Bunny kurulumu göründüğünden basittir: bir pull zone, bir CNAME, bir ücretsiz sertifika ve doğru ayarlanmış birkaç önbellek seçeneği. Aklında kalması gereken dört alışkanlık şu: origin'i her zaman HTTPS olarak tanımla, statik dosyalara çerez basılmasını origin tarafında kes, sorgu dizesi ayarını sürümleme yöntemine göre seç, kurulumdan sonra ikinci isteğin gerçekten HIT döndüğünü curl ile doğrula. Bu dördünü yaptıysan geri kalanı kendiliğinden çalışır.

    Origin tarafını da güçlendirmek istersen hızlı NVMe diskli web hosting ve WordPress hosting paketlerimiz iyi bir zemin sağlar; tam kontrol isteyip kendi önbellek katmanını kurmak istiyorsan VDS veya bulut sunucu seçeneklerimize bakabilirsin. Kurulum ve ayarlarla uğraşmak istemezsen sunucu yönetimi hizmetimiz CDN entegrasyonu dahil bu işleri senin yerine üstlenir.

    BunnyCDNCDNKurulum

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.