Milyonlarca anlık hite sahip devasa haber sitelerinin sunucularının neden çökmediğini hiç merak ettiniz mi? Sırrı, sunucunun kapısında bekleyen, adeta beton gibi bir bariyer ören ve gelen her okuyucuya saniyeler içinde haber sayfasını fırlatan Varnish Cache teknolojisidir.
Varnish Cache (HTTP Accelerator) Nedir?
Varnish Cache, bir Reverse Proxy (Ters Vekil) HTTP hızlandırıcısıdır. Sizin asıl Web Sunucunuzun (Apache veya Nginx) hemen "önüne" kurulur ve 80 numaralı portu (Site Trafiğini) devralır.
Çalışma Mantığı:
Ziyaretçi /futbol-haberi.html sayfasına girer. Varnish, "Dur bakalım ben bu sayfanın HTML'sine daha önce Ram'ime (Önbelleğe) kaydetmiş miydim?" diye bakar.
* Eğer daha önce kaydettiyse (Cache Hit), olayı Apache sunucusundaki PHP'ye hiç sormaz, aracıları tamamen atlar ve doğrudan sitenin HTML halini milisaniyeler içinde kullanıcıya gönderir.
* Eğer kaydetmediyse veya haber yeniyse (Cache Miss), Varnish dönüp Apache'ye "Bana bu sayfayı üret" der, Apache PHP ve MySQL'i yorarak sayfayı oluşturur, Varnish'e verir. Varnish artık hafızaya kazıdığı bu sayfayı kendinden sonraki 1 milyon kullanıcıya tek başına tıkır tıkır ulaştırır.
Neden Apache/Nginx'in Kendi Cache'ine Güvenmiyoruz?
Nginx (FastCGI Cache) ve Apache de kendi önbelleklemesini yapabilir. Ancak Varnish'in asıl geliştirilme amacı "sadece ve sadece Cache" yapmaktır. VCL (Varnish Configuration Language) adı verilen muazzam esnek dili sayesinde:
- Hangi cihazların (Mobil, Tablet, PC) farklı Cache alacağını belirleyebilirsiniz.
- Üyeler için (Çerez/Cookie barındıranlar) cache'i delen "Bypass" kuralları yazabilirsiniz (E-ticaret sepetleri için hayati önemdedir).
- ESI (Edge Side Includes) teknolojisi ile aynı sayfa içindeki haber metnini cache'li tutarken, sağ yandaki "Sepetim/Hesabım" bölgesini Dinamik tutabilirsiniz.
Temel Varnish Kurulumu
Linux terminalinize Varnish'i kurmak çok basittir (Ubuntu için):
sudo apt update
sudo apt install varnish
Ancak asıl maharet Port mimarisini değiştirmektir:
- Apache veya Nginx'in dinlediği Varsayılan Port 80'i boşaltıp, onu Port 8080'e almalısınız. (Sıradan ziyaretçi artık ona direk ulaşamayacak)
- Varnish'in yapılandırma dosyasını (
/etc/default/varnish) düzenleyip Varnish'i asıl kapıya yani Port 80'e nöbetçi olarak koymalısınız. - Varnish'e "Dinamik kodları üretecek asıl arkaplan sunucusu kim?" sorusu için Back-end adresi olarak kendi localhostunuzu ve 8080 portunu göstermelisiniz
(backend default { .host = "127.0.0.1"; .port = "8080"; }).
🚀 Litespeed vs Varnish İkilemine Son!
Varnish çok güçlüdür fakat yapılandırması aşırı karmaşıktır. HazalHost'un sunduğu LiteSpeed Web Server altyapısı, Varnish'in sağladığı tüm özellikleri kendi çekirdeğindeki (LSCache) ile birleştirerek size sunar. Port değiştirmeden, VCL kodlamadan, sadece bir eklenti tıklamasıyla Varnish seviyesindeki performansa ulaşırsınız.
Varnish'in Bir Büyük Eksisi: HTTPS Desteğinin Olmaması
Varnish'in en handikaplı tarafı SSL (HTTPS/443 portu) deşifrelemeyi yapamamasıdır (Güvenlik ve ayrıştırma felsefesi gereği SSL desteklemez).
Bu nedenle eğer siteniz HTTPS kullanıyorsa Varnish'in önüne bir de SSL'i deşifre edip trafiği 80 portuna indirecek bir Nginx Reverse Proxy daha (veya Hitch, HAProxy) koymanız gerekir. Mimari şuna döner: Ziyaretçi → Nginx (SSL'i çözer, Port 80'e paslar) → Varnish (Port 80 okur) → Apache (Port 8080 PHP/MySQL). Bu tarz bir yapı muazzam çalışır ama deneyimsizler için çok karmaşıktır.
Sonuç
Varnish Cache büyük kurgulanmış haber veya çok yüksek okunan blog siteleri için yenilmez bir güçtür. Ancak küçük ve orta ölçekteki E-ticaret / WordPress siteleri için Varnish kurmanın o getireceği teknik karmaşa (SSL termination, cookie stripping), Litespeed Cache veya Nginx FastCGI kullanmaya kıyasla değmeyebilir.