Varnish Cache Kurulumu ve İstisnaları

Varnish bir cache sistemi. Yani sık ziyaret edilen siteler için önbellekleme oluşturup tekrar aynı sayfaların oluşturulmasına engel oluyor.

Ubuntu altında varnish kurulumu için;

apt-get install varnish

komutu yeterli. Varnish diğer servisler gibi;

service varnish restart

ile ayarlamalardan sonra yeniden başlatılabiliyor.

NginX için sites-available içindeki virtual hostlar içerisinde dinlenen portu varnish portu ile değiştirmeniz gerekiyor.
Tabi öncesinde Varnish ayarlarını yapmak gerekli.

/etc/varnish/default.vcl içeriğini şöyle değiştirebilirsiniz.

backend default {
.host = "127.0.0.1";
.port = "8080";
}

sub vcl_fetch {

# DEBUG – asagida sayfanin cache durumunu bir header’a debug icin yazalim

# Varnish cache’lenemeyecegini soyluyor
if (beresp.ttl <= 0s) {
set beresp.http.X-Cacheable = “NO:Not Cacheable”;

# cookie ekleniyor
} elsif (beresp.http.set-cookie) {
set beresp.http.X-Cacheable = “NO:Set-Cookie”;

# cache’lenebilir icerik
} else {
set beresp.http.X-Cacheable = “YES”;
}

# diger ayarlar..

}

/etc/default/varnish dosyasında ise;

DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"

Buradan sonra nGinX için virtual hostlardaki Listen portunu 8080 yapmanız.

Varnish’in kurulduktan sonra çalışıp çalışmadığını anlamak için sayfanın http header bilgilerine bakmanız yeterli. Bu sayfalarda Varnish geçiyorsa sunucunuz cache üzerinden işlem yapıyor demek. Bu headerları;

curl -I http://localhost

şeklinde kontrol edebilirsiniz.

Varnish PHP için session başlatılmış sayfalarda cache yapmıyor. Aynı zamanda HTTP header içinde cache kapalı sayfalarda da cache yapmıyor.

Bu yazının oluşumunda Facebook PHP-tr grubunda Aykut Farsak’ın cevapları etkili olmuştur. Kendisine teşekkürler.