Makale Başlıkları
Kısaca
Varnish Cache, web sunucunuzun önünde çalışan ve sık istenen sayfaları RAM’de tutarak milisaniyeler içinde sunan bir HTTP hızlandırıcısıdır. Doğru yapılandırıldığında yanıt süresini büyük ölçüde düşürür ve origin sunucunun yükünü birkaç kat azaltır. Aşağıda ne olduğunu, nasıl çalıştığını ve adım adım kurulumunu bulacaksınız.
- Varnish 80 portuna geçer, web sunucusu (Nginx/Apache) arka plana (8080) çekilir ve önbellek RAM’de tutulur.
- HTTPS sonlandırması yapmaz; SSL için önüne Hitch veya Nginx gibi bir TLS terminatörü koymak gerekir.
- Yapılandırma VCL diliyle yapılır; WordPress, WooCommerce ve mağaza yazılımlarında çerez/oturum kuralları şarttır.
Varnish Cache, web sunucunuzun önüne konan güçlü bir HTTP hızlandırıcı ve ters proxy önbelleğidir. Sık istenen sayfaları RAM’de tutarak, aynı içeriği tekrar tekrar üretmek yerine anında sunar. Bu, hem yanıt sürelerini ciddi biçimde düşürür hem de arka plandaki (origin) sunucunun yükünü azaltır. Özellikle yüksek trafikli içerik siteleri için Varnish, performansta büyük fark yaratır. Bu rehberde Varnish’in ne olduğunu, mantığını ve sıfırdan nasıl kurulup yapılandırılacağını anlatıyoruz.
Varnish’i çalıştırmak ve önbellek için yeterli RAM ayırmak adına ayrılmış kaynaklı bir VPS/sunucu idealdir. Paylaşımlı ortamlarda root erişimi ve port kontrolü sınırlı olduğundan, Varnish genelde VPS veya bulut sunucu üzerinde çalıştırılır.
Varnish Cache Tam Olarak Nedir?
Varnish, 2006’da yüksek trafikli haber sitelerinin yükünü kaldırmak için geliştirilmiş, açık kaynaklı bir ters proxy önbellek (reverse proxy cache) yazılımıdır. “Ters proxy” olmasının anlamı şudur: kullanıcıyla origin sunucusu arasında durur, gelen istekleri karşılar ve cevapları kendi belleğinde saklar. Aynı içerik bir daha istendiğinde, web sunucusunu ve PHP/veritabanı katmanını hiç rahatsız etmeden cevabı doğrudan RAM’den döndürür.
Varnish’i diğer önbelleklerden ayıran şey, neredeyse her şeyi VCL (Varnish Configuration Language) adlı kendi programlama diliyle kontrol edebilmenizdir. VCL ile hangi sayfanın ne kadar süre önbellekte kalacağını, hangi çerezlerin önbelleği devre dışı bırakacağını, mobil ve masaüstü için farklı sürümler sunulup sunulmayacağını parmağınıza kadar ayarlayabilirsiniz. Varnish, yazdığınız VCL’i uçuş anında C koduna çevirip derler; bu yüzden esneklik performanstan neredeyse hiç ödün vermez.
Varnish Nasıl Çalışır?
Mantık basittir: Varnish öne (80 portu) yerleşir ve kullanıcıyı karşılar; web sunucusu (Nginx/Apache) farklı bir porta (örneğin 8080) çekilir ve Varnish’in “backend”i olur. İstek geldiğinde Varnish önce önbelleğine bakar; içerik orada varsa anında döndürür, yoksa backend’den alır, önbelleğe kaydeder ve kullanıcıya gönderir. Sonraki istekler artık çok daha hızlıdır.
Önbellekte bulunan ve doğrudan döndürülen bir isteğe cache hit, önbellekte olmayıp backend’e gidilmesi gereken isteğe ise cache miss denir. Bir sitenin Varnish’ten gerçek fayda görmesi için hit oranının mümkün olduğunca yüksek olması gerekir. Hit oranı genelde şu unsurlara bağlıdır:
- İçeriğin duruluğu: Sık değişen, kişiye özel içerikler (sepet, hesap paneli) önbelleklenemez; statik makaleler ve liste sayfaları kolayca önbelleklenir.
- Çerez yönetimi: Her istekte değişen analiz çerezleri doğru filtrelenmezse Varnish her ziyaretçiyi farklı kabul eder ve önbelleği neredeyse hiç kullanamaz.
- TTL (Time To Live): Bir nesnenin önbellekte ne kadar kalacağını belirler; çok kısa TTL hit oranını düşürür, çok uzun TTL eski içerik servis edilmesine yol açar.
Varnish’i Ne Zaman Kullanmalı, Ne Zaman Kullanmamalı?
Varnish her senaryonun çözümü değildir. Karar verirken şu tabloya bakabilirsiniz:
| Senaryo | Varnish Uygun mu? | Açıklama |
|---|---|---|
| Yüksek trafikli haber/blog/içerik sitesi | Çok uygun | Sayfaların çoğu herkese aynı; hit oranı çok yüksek olur. |
| Kurumsal tanıtım sitesi | Uygun | Nadiren değişen statik sayfalar önbellekten uçar. |
| WordPress (oturum açmayan ziyaretçi) | Uygun (VCL ile) | wp-admin ve giriş çerezleri hariç tutulmalı. |
| E-ticaret (WooCommerce/Magento) | Kısmen | Ürün/kategori sayfaları önbelleklenir; sepet/ödeme önbellek dışı bırakılır. |
| Tamamen kişiye özel uygulama (panel, dashboard) | Uygun değil | Her cevap kullanıcıya özel; önbellekten fayda gelmez. |
Önemli bir not: WordPress hosting ortamlarının çoğunda zaten LiteSpeed + LSCache gibi web sunucusuna gömülü bir önbellek bulunur. Bu durumda ayrı bir Varnish katmanına genellikle gerek kalmaz; LSCache çerez ve oturum mantığını otomatik halleder. Varnish’in asıl parladığı yer, özel mimarili, kendi sunucusunu yöneten yüksek trafikli projelerdir.
Varnish Kurulumu
Kurulum, dağıtımınıza göre tek komutla yapılır. 2026 itibarıyla güncel kararlı sürüm Varnish Cache 7.x serisidir (7.7 dahil); depo sürümleri biraz daha eski olabilir, en yeni sürüm için resmi packagecloud deposunu ekleyebilirsiniz.
# Ubuntu/Debian sudo apt update sudo apt install varnish # AlmaLinux/RHEL/Rocky sudo dnf install varnish # Baslat ve etkinlestir sudo systemctl enable --now varnish # Surumu dogrula varnishd -V
Varnish varsayılan olarak 6081 portunu dinler ve yönetim için 6082 portunu kullanır. Kurulumdan hemen sonra servisin ayakta olduğunu systemctl status varnish ile doğrulayabilirsiniz. Tüm yapılandırma VCL ile yapılır.
Backend Tanımı (default.vcl)
/etc/varnish/default.vcl dosyasında arka plan sunucusunu tanımlarsınız. vcl 4.1; satırı kullandığınız VCL sürümünü belirtir ve güncel Varnish 7.x serisinde önerilen sürümdür:
vcl 4.1;
backend default {
.host = "127.0.0.1";
.port = "8080";
}
Birden fazla arka plan sunucunuz varsa, ek backend blokları tanımlayıp yük dengeleme (load balancing) için directors modülünü kullanabilirsiniz. Böylece Varnish, hem önbellek hem de basit bir yük dengeleyici görevi görür.
Varnish’i 80 Portuna Almak
Üretimde Varnish’in kullanıcıları doğrudan karşılaması için 80 portunu dinlemesi gerekir. systemd ayarını override ile düzenleyin:
sudo systemctl edit varnish
[Service] ExecStart= ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
sudo systemctl daemon-reload sudo systemctl restart varnish
Ardından web sunucunuzu 8080’de dinletin ve default.vcl içinde .port = "8080" yapın. Burada -s malloc,256m ifadesi, önbellek için 256 MB RAM ayrılacağını söyler; bu değeri sunucunuzun boş RAM’ine göre artırmalısınız.
RAM mi, Disk mi? Önbellek Boyutu Seçimi
Varnish’in en büyük avantajı önbelleği RAM’de (malloc) tutmasıdır; bu, klasik disk tabanlı önbelleklerden kat kat hızlıdır. Kabaca şu tablo yol gösterir:
| Sunucu RAM | Önerilen Varnish önbelleği | Not |
|---|---|---|
| 2 GB | 512 MB | Küçük blog/kurumsal site. |
| 4 GB | 1-2 GB | Orta ölçekli içerik sitesi. |
| 8 GB ve üzeri | 4 GB+ | Yüksek trafikli, çok sayfalı projeler. |
Önbelleğe işletim sistemi ve web sunucusu için yeterli RAM bırakmadan tüm belleği vermeyin; aksi halde sistem takasa (swap) düşer ve performans çöker.
WordPress ve E-ticaret için VCL Notları
WordPress ile Varnish’i barışık çalıştırmanın sırrı çerez yönetimidir. Aşağıdaki gibi giriş yapmış kullanıcıların ve yönetim panelinin önbellek dışı bırakılması gerekir:
sub vcl_recv {
# Yonetim ve giris sayfalarini onbellege alma
if (req.url ~ "^/wp-(admin|login)") {
return (pass);
}
# Oturum acmis kullanicilarda onbellegi atla
if (req.http.Cookie ~ "wordpress_logged_in") {
return (pass);
}
}
E-ticarette ise sepet, ödeme ve hesap sayfaları mutlaka return (pass); ile önbellek dışı tutulur; yalnızca herkese aynı gösterilen ürün ve kategori listeleri önbelleklenir. Yanlış yapılandırma, bir kullanıcının sepetinin başka bir kullanıcıya gösterilmesi gibi ciddi sorunlara yol açabileceği için bu kısmı dikkatle test edin.
Varnish, Nginx Cache ve Redis Farkı
Bu üç çözüm sık karıştırılır ama aynı işi yapmazlar. Özet bir karşılaştırma:
| Çözüm | Ne önbellekler? | Nerede tutar? | Tipik kullanım |
|---|---|---|---|
| Varnish | Tam HTTP sayfa (full-page) | RAM | Bağımsız önbellek katmanı, en esnek; VCL ile derin kontrol. |
| Nginx FastCGI Cache | Tam HTTP sayfa | Disk (+ OS page cache) | Zaten Nginx kullanıyorsanız en sade seçenek. |
| Redis / Memcached | Veritabanı sorgusu, nesne (object cache) | RAM | Sayfa değil, uygulama içi veriyi hızlandırır. |
| LiteSpeed + LSCache | Tam HTTP sayfa | RAM/Disk | Web sunucusuna gömülü; WordPress’te kurulumsuz çalışır. |
Önemli ayrım: Redis ve Varnish rakip değil tamamlayıcıdır. Redis, PHP’nin veritabanı sorgularını hızlandırır (object cache); Varnish ise üretilen sayfayı tamamen RAM’den servis eder (page cache). İleri düzey bir kurulumda ikisi birlikte kullanılabilir. Alastyr WordPress hosting ve paylaşımlı hosting paketlerinde ise LiteSpeed + LSCache hazır geldiği için ayrı bir Varnish kurulumuna çoğu zaman gerek kalmaz.
Dikkat Edilmesi Gerekenler
- Varnish HTTPS/TLS sonlandırması yapmaz; SSL için önüne bir TLS terminatörü (Nginx veya Hitch) koymanız gerekir. Bugün trafiğin neredeyse tamamı HTTPS olduğundan bu adım opsiyonel değildir. SSL sertifikası kurulumunu ihmal etmeyin.
- Web sunucusunu mutlaka backend portuna (8080) taşıyın; aksi halde 80 portu için çakışma olur.
- VCL değişikliğinden sonra
systemctl reload varnishgerekir;varnishadm vcl.loadile sıcak yükleme de yapılabilir. - Önbellek boyutunu (
-s malloc,256m) sunucu RAM’ine göre ayarlayın; RAM dolduğunda Varnish en az kullanılan nesneleri (LRU) atar. - Canlı izleme için
varnishstat(hit/miss oranı), sorun çözümü içinvarnishlogkomutlarını kullanın. - İçerik güncellendiğinde eski sürüm önbellekte kalmasın diye purge/ban kuralları tanımlayın (CMS eklentileri bunu otomatik yapabilir).
Sıkça Sorulan Sorular
Varnish ücretsiz mi?
Evet, Varnish Cache açık kaynaklıdır ve ücretsiz kullanılır. Ek özellikler, ticari destek ve yerleşik TLS gibi yeteneklerle gelen Varnish Enterprise adlı ücretli bir sürüm de vardır; ancak çoğu site için açık kaynak sürümü fazlasıyla yeterlidir.
Varnish HTTPS destekler mi?
Doğrudan desteklemez. Varnish yalnızca HTTP ile çalışır; SSL/TLS sonlandırması için önüne Nginx ya da Hitch gibi bir TLS terminatörü koymanız gerekir. Bu terminatör şifreli trafiği çözer, Varnish’e düz HTTP olarak geçirir.
Hangi siteler için uygun?
En çok faydayı yüksek trafikli, herkese aynı içeriği gösteren haber, blog ve içerik siteleri görür. Kurumsal tanıtım siteleri ve doğru yapılandırılmış WordPress sitelerinde de etkilidir. Tamamen kişiye özel panellerde ise önbellekten kazanç çok sınırlıdır.
Varnish WordPress ile çalışır mı?
Evet, çalışır; ancak oturum ve çerez kuralları için VCL yapılandırması şarttır. wp-admin, giriş sayfası ve oturum açmış kullanıcılar önbellek dışı bırakılmalıdır. Birçok WordPress eklentisi bu kuralları ve önbellek temizleme işlemini otomatikleştirir.
Varnish ile LiteSpeed/LSCache arasındaki fark nedir?
LSCache, LiteSpeed web sunucusuna gömülü bir önbellektir ve ayrı bir servis gerektirmeden, çerez/oturum mantığını otomatik yöneterek çalışır. Varnish ise bağımsız, ayrı kurulan ve VCL ile derinlemesine özelleştirilen bir önbellek katmanıdır. Sunucunuzda LiteSpeed varsa genelde LSCache yeterlidir.
Varnish RAM mi yoksa disk mi kullanır?
Varnish önbelleği varsayılan olarak RAM’de (malloc) tutar; bu, onu disk tabanlı önbelleklerden çok daha hızlı yapar. Çok büyük önbellekler için disk tabanlı seçenekler de vardır, ancak performansın temeli RAM’de tutulan sıcak içeriktir.
Önbellek hit oranımı nasıl ölçerim?
Canlı olarak varnishstat komutunu çalıştırarak cache hit ve miss sayılarını görebilirsiniz. Hit oranının düşük olması genelde çerezlerin yanlış filtrelenmesinden ya da çok kısa TTL değerlerinden kaynaklanır. Detaylı istekleri varnishlog ile inceleyebilirsiniz.
Varnish’i güncellemek için ne yapmalıyım?
Dağıtımınızın paket yöneticisiyle (apt veya dnf) güncelleyebilirsiniz. En yeni sürümü istiyorsanız resmi packagecloud deposunu ekleyin. Büyük sürüm geçişlerinde VCL sürüm satırınızı (örneğin vcl 4.1;) ve modül uyumluluğunu kontrol etmeyi unutmayın.
Varnish için ne kadar RAM gerekir?
Sitenizin önbelleklenebilir içerik boyutuna bağlıdır. Küçük siteler 512 MB ile rahat eder; orta ölçekli projeler 1-2 GB, yüksek trafikli siteler 4 GB ve üzeri ister. İşletim sistemi ve web sunucusu için de yeterli RAM bırakmayı unutmayın.
Önbellek İçin Bol RAM’li Sunucu
Varnish önbelleğiniz için yüksek RAM’li, ayrılmış kaynaklı ve root erişimli VPS/sunucu çözümleri. İzmir’deki kendi veri merkezimizde, 40 Gbit yedekli ağ ve 7/24 destek ile.





