{"id":3743,"date":"2025-12-30T16:01:33","date_gmt":"2025-12-30T13:01:33","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/varnish-cache-ile-nginx-apache-onune-reverse-proxy-kurulumu-ve-performans-kazanclari\/"},"modified":"2025-12-30T16:01:33","modified_gmt":"2025-12-30T13:01:33","slug":"varnish-cache-ile-nginx-apache-onune-reverse-proxy-kurulumu-ve-performans-kazanclari","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/varnish-cache-ile-nginx-apache-onune-reverse-proxy-kurulumu-ve-performans-kazanclari\/","title":{"rendered":"Varnish Cache ile Nginx\/Apache \u00d6n\u00fcne Reverse Proxy Kurulumu ve Performans Kazan\u00e7lar\u0131"},"content":{"rendered":"<div class=\"dchost-blog-content-wrapper\"><div id=\"toc_container\" class=\"toc_transparent no_bullets\"><p class=\"toc_title\">\u0130&ccedil;indekiler<\/p><ul class=\"toc_list\"><li><a href=\"#Varnish_Cache_ile_Reverse_Proxy_Mimarisi_Neden_Bu_Kadar_Fark_Yaratiyor\"><span class=\"toc_number toc_depth_1\">1<\/span> Varnish Cache ile Reverse Proxy Mimarisi Neden Bu Kadar Fark Yarat\u0131yor?<\/a><\/li><li><a href=\"#Varnish_Cache_Nedir_NginxApache_ile_Roller_Nasil_Ayrilir\"><span class=\"toc_number toc_depth_1\">2<\/span> Varnish Cache Nedir, Nginx\/Apache ile Roller Nas\u0131l Ayr\u0131l\u0131r?<\/a><ul><li><a href=\"#Temel_rol_dagilimi\"><span class=\"toc_number toc_depth_2\">2.1<\/span> Temel rol da\u011f\u0131l\u0131m\u0131<\/a><\/li><li><a href=\"#HTTPHTTPS_konusu_TLS_nerede_bitmeli\"><span class=\"toc_number toc_depth_2\">2.2<\/span> HTTP\/HTTPS konusu: TLS nerede bitmeli?<\/a><\/li><\/ul><\/li><li><a href=\"#Mimari_Tasarim_Tek_VPS_Coklu_VPS_ve_DCHost_Uzerinde_Gercekci_Senaryolar\"><span class=\"toc_number toc_depth_1\">3<\/span> Mimari Tasar\u0131m: Tek VPS, \u00c7oklu VPS ve DCHost \u00dczerinde Ger\u00e7ek\u00e7i Senaryolar<\/a><ul><li><a href=\"#1_Tek_VPS_Uzerinde_Hepsi_Bir_Arada_KucukOrta_Olcek\"><span class=\"toc_number toc_depth_2\">3.1<\/span> 1) Tek VPS \u00dczerinde Hepsi Bir Arada (K\u00fc\u00e7\u00fck\/Orta \u00d6l\u00e7ek)<\/a><\/li><li><a href=\"#2_Ayri_Varnish_Katmani_Ayri_Uygulama_Sunuculari_OrtaBuyuk_Olcek\"><span class=\"toc_number toc_depth_2\">3.2<\/span> 2) Ayr\u0131 Varnish Katman\u0131 + Ayr\u0131 Uygulama Sunucular\u0131 (Orta\/B\u00fcy\u00fck \u00d6l\u00e7ek)<\/a><\/li><li><a href=\"#3_Varnish_CDN_Edge_Onbellekleme_Global_Trafik\"><span class=\"toc_number toc_depth_2\">3.3<\/span> 3) Varnish + CDN + Edge \u00d6nbellekleme (Global Trafik)<\/a><\/li><\/ul><\/li><li><a href=\"#Adim_Adim_Kurulum_Varnish_Nginx_Reverse_Proxy_Ornegi\"><span class=\"toc_number toc_depth_1\">4<\/span> Ad\u0131m Ad\u0131m Kurulum: Varnish + Nginx Reverse Proxy \u00d6rne\u011fi<\/a><ul><li><a href=\"#1_Nginxi_Ic_Porttan_Yayin_Yapacak_Sekilde_Ayarlama\"><span class=\"toc_number toc_depth_2\">4.1<\/span> 1) Nginx\u2019i \u0130\u00e7 Porttan Yay\u0131n Yapacak \u015eekilde Ayarlama<\/a><\/li><li><a href=\"#2_Varnish_Kurulumu_ve_Backend_Tanimi\"><span class=\"toc_number toc_depth_2\">4.2<\/span> 2) Varnish Kurulumu ve Backend Tan\u0131m\u0131<\/a><\/li><li><a href=\"#3_Varnishin_80_Portu_Dinlemesini_Saglamak\"><span class=\"toc_number toc_depth_2\">4.3<\/span> 3) Varnish\u2019in 80. Portu Dinlemesini Sa\u011flamak<\/a><\/li><\/ul><\/li><li><a href=\"#WordPressWooCommerce_icin_Varnish_VCL_Ipuclari\"><span class=\"toc_number toc_depth_1\">5<\/span> WordPress\/WooCommerce i\u00e7in Varnish VCL \u0130pu\u00e7lar\u0131<\/a><ul><li><a href=\"#Oturum_acmis_kullanicilari_Cache_Disinda_Birakmak\"><span class=\"toc_number toc_depth_2\">5.1<\/span> Oturum a\u00e7m\u0131\u015f kullan\u0131c\u0131lar\u0131 Cache D\u0131\u015f\u0131nda B\u0131rakmak<\/a><\/li><li><a href=\"#WooCommerce_Sepet_Odeme_ve_Hesap_Sayfalari\"><span class=\"toc_number toc_depth_2\">5.2<\/span> WooCommerce Sepet, \u00d6deme ve Hesap Sayfalar\u0131<\/a><\/li><li><a href=\"#Cache-Control_Headerlari_ile_Uyumlu_Calismak\"><span class=\"toc_number toc_depth_2\">5.3<\/span> Cache-Control Header\u2019lar\u0131 ile Uyumlu \u00c7al\u0131\u015fmak<\/a><\/li><\/ul><\/li><li><a href=\"#Performans_Kazanclari_TTFB_RPS_ve_Kaynak_Kullanimi\"><span class=\"toc_number toc_depth_1\">6<\/span> Performans Kazan\u00e7lar\u0131: TTFB, RPS ve Kaynak Kullan\u0131m\u0131<\/a><ul><li><a href=\"#1_TTFB_Time_To_First_Byte_Iyilesmesi\"><span class=\"toc_number toc_depth_2\">6.1<\/span> 1) TTFB (Time To First Byte) \u0130yile\u015fmesi<\/a><\/li><li><a href=\"#2_RPS_Request_Per_Second_Kapasitesinin_Artmasi\"><span class=\"toc_number toc_depth_2\">6.2<\/span> 2) RPS (Request Per Second) Kapasitesinin Artmas\u0131<\/a><\/li><li><a href=\"#3_CPU_IO_ve_Veritabani_Yukunun_Azalmasi\"><span class=\"toc_number toc_depth_2\">6.3<\/span> 3) CPU, I\/O ve Veritaban\u0131 Y\u00fck\u00fcn\u00fcn Azalmas\u0131<\/a><\/li><\/ul><\/li><li><a href=\"#Gelismis_Konular_Mikro_Onbellekleme_PURGE_ve_Izleme\"><span class=\"toc_number toc_depth_1\">7<\/span> Geli\u015fmi\u015f Konular: Mikro \u00d6nbellekleme, PURGE ve \u0130zleme<\/a><ul><li><a href=\"#Mikro_Onbellekleme_Microcaching\"><span class=\"toc_number toc_depth_2\">7.1<\/span> Mikro \u00d6nbellekleme (Microcaching)<\/a><\/li><li><a href=\"#PURGE_BAN_Onbellegi_Uygulamadan_Temizlemek\"><span class=\"toc_number toc_depth_2\">7.2<\/span> PURGE \/ BAN: \u00d6nbelle\u011fi Uygulamadan Temizlemek<\/a><\/li><li><a href=\"#Varnish_Loglama_ve_Izleme\"><span class=\"toc_number toc_depth_2\">7.3<\/span> Varnish Loglama ve \u0130zleme<\/a><\/li><\/ul><\/li><li><a href=\"#Varnish_mi_Nginx_FastCGI_Cache_mi_CDN_mi_Dogru_Kombinasyon\"><span class=\"toc_number toc_depth_1\">8<\/span> Varnish mi, Nginx FastCGI Cache mi, CDN mi? Do\u011fru Kombinasyon<\/a><\/li><li><a href=\"#DCHost_Altyapisinda_Varnish_Kullanirken_Dikkat_Ettigimiz_Noktalar\"><span class=\"toc_number toc_depth_1\">9<\/span> DCHost Altyap\u0131s\u0131nda Varnish Kullan\u0131rken Dikkat Etti\u011fimiz Noktalar<\/a><\/li><li><a href=\"#Ozet_ve_Sonraki_Adimlar_Varnish_ile_Trafik_Patlamalarina_Karsi_Hazirlikli_Olun\"><span class=\"toc_number toc_depth_1\">10<\/span> \u00d6zet ve Sonraki Ad\u0131mlar: Varnish ile Trafik Patlamalar\u0131na Kar\u015f\u0131 Haz\u0131rl\u0131kl\u0131 Olun<\/a><\/li><\/ul><\/div>\n<h2><span id=\"Varnish_Cache_ile_Reverse_Proxy_Mimarisi_Neden_Bu_Kadar_Fark_Yaratiyor\">Varnish Cache ile Reverse Proxy Mimarisi Neden Bu Kadar Fark Yarat\u0131yor?<\/span><\/h2>\n<p>Bir web projesi i\u00e7in kapasite planlama toplant\u0131s\u0131nda en s\u0131k gelen sorulardan biri \u015fudur: &#8220;Mevcut Nginx\/Apache kurulumumuzla ne kadar daha trafik kald\u0131rabiliriz?&#8221; CPU, RAM, disk I\/O ve veritaban\u0131 optimizasyonlar\u0131 elbette \u00f6nemli; ancak dinamik PHP tabanl\u0131 sitelerde as\u0131l fark\u0131 \u00e7o\u011fu zaman <strong>tam sayfa \u00f6nbellekleme<\/strong> yarat\u0131r. \u0130\u015fte burada Varnish Cache devreye girer.<\/p>\n<p>Varnish, Nginx veya Apache&#8217;nin \u00f6n\u00fcnde \u00e7al\u0131\u015fan, HTTP trafi\u011fi i\u00e7in \u00f6zel olarak tasarlanm\u0131\u015f, son derece h\u0131zl\u0131 bir <strong>reverse proxy ve cache sunucusudur<\/strong>. Do\u011fru kurguland\u0131\u011f\u0131nda TTFB&#8217;yi (Time To First Byte) milisaniye seviyelerine \u00e7ekebilir, PHP-FPM ve veritaban\u0131 y\u00fck\u00fcn\u00fc dramatik bi\u00e7imde azaltabilir ve ayn\u0131 donan\u0131mla saniyede kat kat fazla iste\u011fi kar\u015f\u0131laman\u0131za izin verir. DCHost altyap\u0131s\u0131nda y\u00fcksek trafikli WordPress, WooCommerce ve Laravel projelerinde y\u0131llard\u0131r sahada uygulad\u0131\u011f\u0131m\u0131z en etkili performans kald\u0131ra\u00e7lar\u0131ndan biri tam olarak budur.<\/p>\n<p>Bu rehberde Varnish Cache ile Nginx veya Apache&#8217;nin \u00f6n\u00fcne reverse proxy kurulumunu, ger\u00e7ek\u00e7i mimari se\u00e7eneklerini, tipik VCL (Varnish Configuration Language) ayarlar\u0131n\u0131, WordPress\/WooCommerce i\u00e7in dikkat edilmesi gereken n\u00fcanslar\u0131 ve pratik performans kazan\u0131mlar\u0131n\u0131 ad\u0131m ad\u0131m ele alaca\u011f\u0131z. Yaz\u0131n\u0131n sonunda, tek bir NVMe <a href=\"https:\/\/www.dchost.com\/tr\/vps\">VPS<\/a> \u00fczerinde bile <strong>\u00f6nbellek vuru\u015f oran\u0131 (cache hit ratio)<\/strong> y\u00fcksek, TTFB&#8217;si d\u00fc\u015f\u00fck ve trafik patlamalar\u0131na kar\u015f\u0131 \u00e7ok daha dayan\u0131kl\u0131 bir mimariyi rahatl\u0131kla kurabilecek seviyeye geleceksiniz.<\/p>\n<h2><span id=\"Varnish_Cache_Nedir_NginxApache_ile_Roller_Nasil_Ayrilir\">Varnish Cache Nedir, Nginx\/Apache ile Roller Nas\u0131l Ayr\u0131l\u0131r?<\/span><\/h2>\n<p>Varnish&#8217;i do\u011fru anlamadan sa\u011fl\u0131kl\u0131 bir kurulum tasarlamak zordur. Varnish bir web sunucusu de\u011fil, <strong>HTTP reverse proxy<\/strong> ve <strong>tam sayfa \u00f6nbellek motorudur<\/strong>. Statik dosyalar\u0131 da sunabilir; ama esas g\u00fcc\u00fc, dinamik sayfalar\u0131n sonucunu bellek \u00fczerinde tutarak ayn\u0131 isteklere tekrar tekrar cevap vermesindedir.<\/p>\n<h3><span id=\"Temel_rol_dagilimi\">Temel rol da\u011f\u0131l\u0131m\u0131<\/span><\/h3>\n<ul>\n<li><strong>Varnish:<\/strong> \u0130stemcinin (taray\u0131c\u0131, mobil uygulama, bot vb.) ilk temas etti\u011fi katmand\u0131r. HTTP isteklerini kar\u015f\u0131lar, m\u00fcmk\u00fcnse \u00f6nbellekten (cache) yan\u0131tlar, de\u011filse arkadaki Nginx\/Apache&#8217;ye iletir.<\/li>\n<li><strong>Nginx\/Apache (backend\/origin):<\/strong> PHP-FPM, uygulama kodu (WordPress, Laravel, Magento vb.) ve veritaban\u0131 ile konu\u015fan as\u0131l uygulama sunucusudur.<\/li>\n<\/ul>\n<p>Ak\u0131\u015f kabaca \u015f\u00f6yledir:<\/p>\n<ul>\n<li>Taray\u0131c\u0131 <code>GET \/<\/code> iste\u011fini g\u00f6nderir.<\/li>\n<li>Varnish iste\u011fi al\u0131r, HTTP header&#8217;lara, URL&#8217;ye, \u00e7erezlere ve tan\u0131ml\u0131 VCL kurallar\u0131na bakarak bu iste\u011fin cache&#8217;ten kar\u015f\u0131lan\u0131p kar\u015f\u0131lanamayaca\u011f\u0131na karar verir.<\/li>\n<li>E\u011fer daha \u00f6nce ayn\u0131 i\u00e7eri\u011fi \u00f6nbelle\u011fe ald\u0131ysa, cevab\u0131 RAM&#8217;den milisaniyeler i\u00e7inde d\u00f6ner (cache hit).<\/li>\n<li>\u00d6nbellekte yoksa veya \u00f6nbelleklenemezse, iste\u011fi Nginx\/Apache&#8217;ye aktar\u0131r (cache miss). Backend cevab\u0131 geldikten sonra, kurallara g\u00f6re \u00f6nbelle\u011fe koyabilir.<\/li>\n<\/ul>\n<p>Bu rol da\u011f\u0131l\u0131m\u0131 sayesinde Nginx\/Apache &amp; PHP-FPM &amp; veritaban\u0131 \u00fc\u00e7l\u00fcs\u00fc, ayn\u0131 anda \u00e7ok daha az dinamik iste\u011fi i\u015flemek zorunda kal\u0131r. \u00d6rne\u011fin yo\u011fun bir haber sitesinde anasayfa iste\u011finin %90&#8217;\u0131ndan fazlas\u0131n\u0131 Varnish \u00fczerinden cevaplayabildi\u011finizde, CPU y\u00fck\u00fcn\u00fcn dramatik bi\u00e7imde d\u00fc\u015ft\u00fc\u011f\u00fcn\u00fc, NVMe disk I\/O&#8217;sunun rahatlad\u0131\u011f\u0131n\u0131 ve tepki s\u00fcrelerinin istikrarl\u0131 hale geldi\u011fini g\u00f6rebilirsiniz. <a href=\"https:\/\/www.dchost.com\/blog\/yuksek-trafikli-haber-ve-blog-siteleri-icin-hosting-onbellek-cdn-ve-veritabani-olceklendirme\/\">Y\u00fcksek trafikli haber ve blog siteleri i\u00e7in hosting ve \u00f6nbellek stratejileri<\/a> \u00fczerine yazd\u0131\u011f\u0131m\u0131z rehberde bu etkiyi detayl\u0131 \u00f6rneklerle anlat\u0131yoruz.<\/p>\n<h3><span id=\"HTTPHTTPS_konusu_TLS_nerede_bitmeli\">HTTP\/HTTPS konusu: TLS nerede bitmeli?<\/span><\/h3>\n<p>Varnish tarihsel olarak TLS (HTTPS) terminasyonunu do\u011frudan desteklemedi\u011fi i\u00e7in genellikle a\u015fa\u011f\u0131daki iki desen kullan\u0131l\u0131r:<\/p>\n<ul>\n<li><strong>Desen 1:<\/strong> TLS terminat\u00f6r\u00fc (\u00f6r. Hitch veya Nginx) \u2192 Varnish (HTTP) \u2192 Nginx\/Apache (HTTP)<\/li>\n<li><strong>Desen 2:<\/strong> D\u0131\u015f tarafta ba\u015fka bir load balancer\/CDN TLS&#8217;i bitirir \u2192 Varnish&#8217;e HTTP olarak gelir \u2192 Backend&#8217;e HTTP gider<\/li>\n<\/ul>\n<p>Bu yaz\u0131da odak noktam\u0131z, <strong>Varnish&#8217;in Nginx\/Apache \u00f6n\u00fcnde oldu\u011fu klasik reverse proxy<\/strong> senaryosu; dolay\u0131s\u0131yla \u00f6rneklerde HTTP \u00fczerinden konu\u015faca\u011f\u0131z. \u00dcretim ortam\u0131nda ise genellikle Nginx veya Hitch ile TLS terminasyonu yap\u0131p trafik Varnish&#8217;e HTTP olarak aktar\u0131l\u0131r. Detayl\u0131 TLS ve HTTP\/2\/HTTP\/3 optimizasyonlar\u0131 i\u00e7in <a href=\"https:\/\/www.dchost.com\/blog\/http-2-ve-http-3-destegi-seo-ve-core-web-vitalsi-nasil-etkiler-hosting-secerken-nelere-bakmali\/\">HTTP\/2 ve HTTP\/3 deste\u011finin SEO ve Core Web Vitals etkilerini<\/a> anlatt\u0131\u011f\u0131m\u0131z rehbere de mutlaka g\u00f6z at\u0131n.<\/p>\n<h2><span id=\"Mimari_Tasarim_Tek_VPS_Coklu_VPS_ve_DCHost_Uzerinde_Gercekci_Senaryolar\">Mimari Tasar\u0131m: Tek VPS, \u00c7oklu VPS ve DCHost \u00dczerinde Ger\u00e7ek\u00e7i Senaryolar<\/span><\/h2>\n<p>Varnish&#8217;i nereye koyaca\u011f\u0131n\u0131z tamamen i\u015f y\u00fck\u00fcn\u00fcz\u00fcn b\u00fcy\u00fckl\u00fc\u011f\u00fcne ve mevcut altyap\u0131n\u0131za ba\u011fl\u0131. DCHost taraf\u0131nda en s\u0131k g\u00f6rd\u00fc\u011f\u00fcm\u00fcz \u00fc\u00e7 temel senaryoyu \u00f6zetleyelim.<\/p>\n<h3><span id=\"1_Tek_VPS_Uzerinde_Hepsi_Bir_Arada_KucukOrta_Olcek\">1) Tek VPS \u00dczerinde Hepsi Bir Arada (K\u00fc\u00e7\u00fck\/Orta \u00d6l\u00e7ek)<\/span><\/h3>\n<p>Ba\u015flang\u0131\u00e7 d\u00fczeyinde veya orta trafik alan siteler i\u00e7in en pratik mimari:<\/p>\n<ul>\n<li>Tek bir NVMe VPS \u00fczerinde: Varnish + Nginx veya Apache + PHP-FPM + veritaban\u0131<\/li>\n<li>Varnish 80. portu dinler, backend Nginx\/Apache 8080 gibi i\u00e7 bir porttan yay\u0131n yapar.<\/li>\n<\/ul>\n<p>\u00d6rnek trafik profili:<\/p>\n<ul>\n<li>Ayl\u0131k 300k \u2013 5M sayfa g\u00f6r\u00fcnt\u00fcleme<\/li>\n<li>A\u011f\u0131rl\u0131kl\u0131 okuma trafi\u011fi (blog, i\u00e7erik sitesi, basit e-ticaret)<\/li>\n<li>Yo\u011fun anlarda saniyede 100\u2013300 istek<\/li>\n<\/ul>\n<p>Bu senaryoda bile do\u011fru Varnish konfig\u00fcrasyonu ile, \u00f6rne\u011fin <a href=\"https:\/\/www.dchost.com\/blog\/yuksek-ttfb-sorununu-cozmek-wordpress-ve-php-sitelerde-sunucu-tarafli-nedenler-ve-cozumler\/\">y\u00fcksek TTFB sorunlar\u0131n\u0131n sunucu taraf\u0131 nedenlerini<\/a> b\u00fcy\u00fck oranda ortadan kald\u0131rabilirsiniz.<\/p>\n<h3><span id=\"2_Ayri_Varnish_Katmani_Ayri_Uygulama_Sunuculari_OrtaBuyuk_Olcek\">2) Ayr\u0131 Varnish Katman\u0131 + Ayr\u0131 Uygulama Sunucular\u0131 (Orta\/B\u00fcy\u00fck \u00d6l\u00e7ek)<\/span><\/h3>\n<p>Daha y\u00fcksek trafikli yap\u0131larda, \u00f6zellikle WooCommerce, b\u00fcy\u00fck kataloglu ma\u011fazalar ve SaaS panellerinde a\u015fa\u011f\u0131daki mimariyi tercih ediyoruz:<\/p>\n<ul>\n<li>1 veya daha fazla Varnish sunucusu (VPS veya dedicated)<\/li>\n<li>Arkada 1\u2013N adet Nginx\/Apache + PHP-FPM uygulama sunucusu<\/li>\n<li>Veritaban\u0131 ayr\u0131 bir VPS veya <a href=\"https:\/\/www.dchost.com\/tr\/fiziksel-sunucu\">dedicated sunucu<\/a>da<\/li>\n<\/ul>\n<p>Bu mimaride Varnish ayn\u0131 zamanda basit bir <strong>HTTP load balancer<\/strong> olarak da davranabilir. Backend havuzuna birden fazla Nginx\/Apache sunucusu ekleyip, trafi\u011fi round-robin veya health-check destekli \u015fekilde da\u011f\u0131tabilirsiniz. E\u011fer bu yap\u0131y\u0131 daha da ileri ta\u015f\u0131mak isterseniz, <a href=\"https:\/\/www.dchost.com\/blog\/nginx-reverse-proxy-ve-basit-load-balancer-kurulumu-kucuk-projeler-icin-uygulamali-rehber\/\">Nginx reverse proxy ve basit load balancer kurulum rehberimizde<\/a> anlatt\u0131\u011f\u0131m\u0131z baz\u0131 fikirleri Varnish ile birlikte uygulayabilirsiniz.<\/p>\n<h3><span id=\"3_Varnish_CDN_Edge_Onbellekleme_Global_Trafik\">3) Varnish + CDN + Edge \u00d6nbellekleme (Global Trafik)<\/span><\/h3>\n<p>Global hedef kitleye hizmet veren projelerde, Varnish&#8217;i yaln\u0131zca uygulama sunucusunu koruyan bir katman olarak de\u011fil, ayn\u0131 zamanda CDN ile birlikte \u00e7al\u0131\u015fan bir <strong>origin cache ve shield<\/strong> olarak konumland\u0131r\u0131yoruz:<\/p>\n<ul>\n<li>Kullan\u0131c\u0131 \u2192 CDN (edge cache) \u2192 Varnish (origin cache) \u2192 Nginx\/Apache backend<\/li>\n<\/ul>\n<p>Burada CDN, d\u00fcnya genelinde gecikme s\u00fcrelerini d\u00fc\u015f\u00fcr\u00fcrken, Varnish hem CDN isteklerini hem de do\u011frudan gelen HTTP trafi\u011fini kar\u015f\u0131layabilir. CDN \u00f6nbellek kurallar\u0131yla Varnish kurallar\u0131n\u0131 uyumlu tasarlamak i\u00e7in <a href=\"https:\/\/www.dchost.com\/blog\/cdn-onbellekleme-cache-control-ve-edge-kurallari-wordpress-ve-woocommercede-tam-isabet-ayarlar\/\">CDN \u00f6nbellekleme ve Cache-Control ba\u015fl\u0131klar\u0131<\/a> rehberimizdeki \u00f6nerilerden yararlanabilirsiniz.<\/p>\n<h2><span id=\"Adim_Adim_Kurulum_Varnish_Nginx_Reverse_Proxy_Ornegi\">Ad\u0131m Ad\u0131m Kurulum: Varnish + Nginx Reverse Proxy \u00d6rne\u011fi<\/span><\/h2>\n<p>\u00d6rnek senaryoda Ubuntu\/Debian tabanl\u0131 bir VPS \u00fczerinde, <strong>Nginx backend<\/strong> ve \u00f6n\u00fcnde Varnish kullanaca\u011f\u0131z. Apache kullananlar i\u00e7in mant\u0131k ayn\u0131, sadece backend konfig\u00fcrasyon dosyalar\u0131 farkl\u0131 dizinlerde olacak.<\/p>\n<h3><span id=\"1_Nginxi_Ic_Porttan_Yayin_Yapacak_Sekilde_Ayarlama\">1) Nginx\u2019i \u0130\u00e7 Porttan Yay\u0131n Yapacak \u015eekilde Ayarlama<\/span><\/h3>\n<p>Varsay\u0131lan kurulumda Nginx 80. portu dinler. Varnish&#8217;in bu portu devralabilmesi i\u00e7in Nginx&#8217;i 8080 gibi dahili bir porta ta\u015f\u0131yoruz.<\/p>\n<p><strong>\u00d6rnek Nginx server blo\u011fu:<\/strong><\/p>\n<pre class=\"language-nginx line-numbers\"><code class=\"language-nginx\">server {\n    listen 8080;\n    server_name example.com www.example.com;\n\n    root \/var\/www\/example.com\/public;\n    index index.php index.html;\n\n    location \/ {\n        try_files $uri $uri\/ \/index.php?$args;\n    }\n\n    location ~ .php$ {\n        include fastcgi_params;\n        fastcgi_pass unix:\/run\/php\/php8.2-fpm.sock;\n        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n    }\n}\n<\/code><\/pre>\n<p>Burada \u00f6nemli olan nokta, <code>listen 80;<\/code> yerine <code>listen 8080;<\/code> kullanmam\u0131z. Ayn\u0131 zamanda siteniz birden \u00e7ok vhost i\u00e7eriyorsa, hepsini 8080&#8217;e ta\u015f\u0131man\u0131z gerekecek.<\/p>\n<h3><span id=\"2_Varnish_Kurulumu_ve_Backend_Tanimi\">2) Varnish Kurulumu ve Backend Tan\u0131m\u0131<\/span><\/h3>\n<p>Debian\/Ubuntu \u00fczerinde temel Varnish kurulumu:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">apt update\napt install varnish\n<\/code><\/pre>\n<p>Ard\u0131ndan, backend olarak Nginx&#8217;i tan\u0131mlamak i\u00e7in genellikle <code>\/etc\/varnish\/default.vcl<\/code> dosyas\u0131n\u0131 d\u00fczenleriz.<\/p>\n<p><strong>Basit backend tan\u0131m\u0131:<\/strong><\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">vcl 4.1;\n\nbackend default {\n    .host = &quot;127.0.0.1&quot;;\n    .port = &quot;8080&quot;;\n}\n\nsub vcl_recv {\n    # Sa\u011fl\u0131k kontrol\u00fc veya basit bypass kurallar\u0131 i\u00e7in temel \u00f6rnekler\n\n    # Y\u00f6netim panelini cache'leme (\u00e7o\u011fu zaman) istemeyiz\n    if (req.url ~ &quot;wp-admin&quot; || req.url ~ &quot;wp-login.php&quot;) {\n        return (pass);\n    }\n}\n\nsub vcl_backend_response {\n    # Backend cevab\u0131n\u0131 cache'lerken temel TTL ayarlar\u0131\n    if (bereq.url ~ &quot;.(png|jpg|css|js|gif|svg)$&quot;) {\n        set beresp.ttl = 1h;\n    } else {\n        set beresp.ttl = 120s;\n    }\n}\n<\/code><\/pre>\n<p>Bu a\u015famada yapt\u0131\u011f\u0131m\u0131z \u015fey \u00e7ok basit: Varnish&#8217;e &#8220;t\u00fcm istekleri 127.0.0.1:8080&#8217;deki Nginx&#8217;e ilet, ama admin ve login sayfalar\u0131n\u0131 cache&#8217;leme&#8221; demek. Buray\u0131, uygulaman\u0131za \u00f6zel kurallarla zenginle\u015ftirece\u011fiz.<\/p>\n<h3><span id=\"3_Varnishin_80_Portu_Dinlemesini_Saglamak\">3) Varnish\u2019in 80. Portu Dinlemesini Sa\u011flamak<\/span><\/h3>\n<p>Varnish varsay\u0131lan olarak 6081 portunu dinler. Bunu 80 olarak de\u011fi\u015ftirmemiz gerekiyor. Sistemd tabanl\u0131 da\u011f\u0131t\u0131mlarda bu ayar genellikle <code>\/lib\/systemd\/system\/varnish.service<\/code> veya <code>\/etc\/systemd\/system\/varnish.service<\/code> alt\u0131nda yer al\u0131r.<\/p>\n<p><strong>\u00d6rnek servis parametreleri:<\/strong><\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">ExecStart=\/usr\/sbin\/varnishd \n  -a :80 \n  -T 127.0.0.1:6082 \n  -f \/etc\/varnish\/default.vcl \n  -s malloc,2G\n<\/code><\/pre>\n<p>Burada dikkat edilmesi gereken noktalar:<\/p>\n<ul>\n<li><code>-a :80<\/code> \u2192 Varnish&#8217;in 80. portu dinlemesini sa\u011flar.<\/li>\n<li><code>-T<\/code> \u2192 Y\u00f6netim aray\u00fcz\u00fc (varnishadm) i\u00e7in kullan\u0131lacak kontrol portu.<\/li>\n<li><code>-s malloc,2G<\/code> \u2192 RAM \u00fczerinde 2GB cache alan\u0131 ay\u0131r.<\/li>\n<\/ul>\n<p>Servis dosyas\u0131n\u0131 d\u00fczenledikten sonra:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">systemctl daemon-reload\nsystemctl restart varnish\n<\/code><\/pre>\n<p>Art\u0131k taray\u0131c\u0131dan <code>http:\/\/example.com<\/code> iste\u011fi geldi\u011finde ilk temas eden bile\u015fen Varnish olacakt\u0131r.<\/p>\n<h2><span id=\"WordPressWooCommerce_icin_Varnish_VCL_Ipuclari\">WordPress\/WooCommerce i\u00e7in Varnish VCL \u0130pu\u00e7lar\u0131<\/span><\/h2>\n<p>Varnish&#8217;in ger\u00e7ek g\u00fcc\u00fc, VCL ile isteklere ve header&#8217;lara g\u00f6re ince ayar yapabilmemizden geliyor. WordPress ve WooCommerce gibi PHP uygulamalar\u0131nda, \u00f6zellikle <strong>\u00e7erez y\u00f6netimi<\/strong> ve <strong>giri\u015f yapm\u0131\u015f kullan\u0131c\u0131lar<\/strong> a\u00e7\u0131s\u0131ndan do\u011fru kurgu kritik.<\/p>\n<h3><span id=\"Oturum_acmis_kullanicilari_Cache_Disinda_Birakmak\">Oturum a\u00e7m\u0131\u015f kullan\u0131c\u0131lar\u0131 Cache D\u0131\u015f\u0131nda B\u0131rakmak<\/span><\/h3>\n<p>Genellikle \u015fu prensibi uygular\u0131z:<\/p>\n<ul>\n<li>Ziyaret\u00e7i <strong>giri\u015f yapmam\u0131\u015fsa<\/strong> \u2192 sayfan\u0131n HTML \u00e7\u0131kt\u0131s\u0131n\u0131 g\u00fcvenle cache&#8217;le.<\/li>\n<li>Ziyaret\u00e7i <strong>giri\u015f yapm\u0131\u015fsa<\/strong> \u2192 ki\u015fiye \u00f6zel i\u00e7erik olabilir, bu y\u00fczden pass (cache&#8217;siz) \u00e7al\u0131\u015f.<\/li>\n<\/ul>\n<p>WordPress taraf\u0131nda giri\u015f yapm\u0131\u015f kullan\u0131c\u0131lar\u0131 tespit etmek i\u00e7in genellikle <code>wordpress_logged_in_<\/code> \u00e7erezi kullan\u0131r\u0131z.<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">sub vcl_recv {\n    # ... backend tan\u0131m\u0131 ayn\u0131 kals\u0131n ...\n\n    # Y\u00f6netim alan\u0131 ve login sayfas\u0131\n    if (req.url ~ &quot;wp-admin&quot; || req.url ~ &quot;wp-login.php&quot;) {\n        return (pass);\n    }\n\n    # Giri\u015f yapm\u0131\u015f kullan\u0131c\u0131lar\u0131n \u00e7erezleri\n    if (req.http.Cookie ~ &quot;wordpress_logged_in_&quot;) {\n        return (pass);\n    }\n\n    # Gereksiz \u00e7erezleri temizleyerek cache hit oran\u0131n\u0131 artt\u0131r\n    if (req.http.Cookie) {\n        # Analytics, A\/B test veya tamamen \u00f6nemsiz \u00e7erezleri silebilirsiniz\n        set req.http.Cookie = regsuball(req.http.Cookie, &quot;(_ga|_gid|_fbp)=[^;]+(; )?&quot;, &quot;&quot;);\n        if (req.http.Cookie == &quot;&quot; || req.http.Cookie == &quot;;&quot;) {\n            unset req.http.Cookie;\n        }\n    }\n}\n<\/code><\/pre>\n<p>Bu sayede anonim ziyaret\u00e7ilerin g\u00f6rd\u00fc\u011f\u00fc sayfalar agresif \u015fekilde cache&#8217;lenirken, giri\u015f yapm\u0131\u015f y\u00f6netici veya \u00fcye kullan\u0131c\u0131lar i\u00e7in uygulama her iste\u011fi dinamik olarak hesaplayacakt\u0131r.<\/p>\n<h3><span id=\"WooCommerce_Sepet_Odeme_ve_Hesap_Sayfalari\">WooCommerce Sepet, \u00d6deme ve Hesap Sayfalar\u0131<\/span><\/h3>\n<p>WooCommerce sitelerinde en s\u0131k yap\u0131lan hata, sepet ve \u00f6deme ad\u0131mlar\u0131n\u0131 da Varnish ile cache&#8217;lemeye \u00e7al\u0131\u015fmakt\u0131r. Bu, kullan\u0131c\u0131lar\u0131n birbirinin sepetini g\u00f6rmesi gibi \u00e7ok ciddi problemler do\u011furabilir. Dolay\u0131s\u0131yla a\u015fa\u011f\u0131daki URL desenlerini mutlaka bypass etmek gerekir:<\/p>\n<ul>\n<li><code>\/cart\/<\/code><\/li>\n<li><code>\/checkout\/<\/code><\/li>\n<li><code>\/my-account\/<\/code> (duruma g\u00f6re)<\/li>\n<\/ul>\n<p><strong>\u00d6rnek VCL kural\u0131:<\/strong><\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">sub vcl_recv {\n    # ... \u00f6nceki kurallar ...\n\n    if (req.url ~ &quot;\/cart&quot; || req.url ~ &quot;\/checkout&quot; || req.url ~ &quot;\/my-account&quot;) {\n        return (pass);\n    }\n}\n<\/code><\/pre>\n<p>WooCommerce taraf\u0131nda veritaban\u0131 performans\u0131 ve indeksleme de en az \u00f6nbellekleme kadar kritik. Bu konuda daha derin optimizasyon yapmak isterseniz, <a href=\"https:\/\/www.dchost.com\/blog\/woocommerce-icin-mysql-innodb-tuning-kontrol-listesi-buffer-pool-indeksleme-ve-slow-query-analizi-nasil-akillica-yapilir\/\">WooCommerce i\u00e7in MySQL\/InnoDB tuning kontrol listesini<\/a> anlatt\u0131\u011f\u0131m\u0131z rehbere g\u00f6z atman\u0131z\u0131 \u00f6neririz.<\/p>\n<h3><span id=\"Cache-Control_Headerlari_ile_Uyumlu_Calismak\">Cache-Control Header\u2019lar\u0131 ile Uyumlu \u00c7al\u0131\u015fmak<\/span><\/h3>\n<p>Modern uygulamalarda HTTP cache y\u00f6netimini sadece Varnish taraf\u0131nda de\u011fil, ayn\u0131 zamanda uygulaman\u0131n \u00fcretti\u011fi <code>Cache-Control<\/code> ba\u015fl\u0131klar\u0131yla birlikte d\u00fc\u015f\u00fcnmek gerekir. \u00d6rne\u011fin:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">Cache-Control: public, max-age=120, stale-while-revalidate=30, stale-if-error=86400\n<\/code><\/pre>\n<p>Bu ba\u015fl\u0131k, Varnish (ve varsa CDN) taraf\u0131na \u015fu mesaj\u0131 verir: &#8220;Bu cevab\u0131 120 saniye boyunca taze kabul et, 30 saniye boyunca arkada yenilerken eskiyi sunabilirsin, hata durumunda ise 1 g\u00fcn boyunca eski cevab\u0131 kullan.&#8221; Detaylar\u0131n\u0131 <a href=\"https:\/\/www.dchost.com\/blog\/kesinti-caninizi-sikmasin-stale-while-revalidate-ve-stale-if-error-nasil-hayat-kurtarir\/\">stale-while-revalidate ve stale-if-error mekanizmalar\u0131n\u0131 anlatt\u0131\u011f\u0131m\u0131z yaz\u0131da<\/a> daha derin ele ald\u0131k.<\/p>\n<h2><span id=\"Performans_Kazanclari_TTFB_RPS_ve_Kaynak_Kullanimi\">Performans Kazan\u00e7lar\u0131: TTFB, RPS ve Kaynak Kullan\u0131m\u0131<\/span><\/h2>\n<p>Kurumsal projelerde Varnish katman\u0131 ekledi\u011fimizde tipik olarak g\u00f6rd\u00fc\u011f\u00fcm\u00fcz \u00f6l\u00e7\u00fclebilir kazan\u0131mlar \u015f\u00f6yle:<\/p>\n<h3><span id=\"1_TTFB_Time_To_First_Byte_Iyilesmesi\">1) TTFB (Time To First Byte) \u0130yile\u015fmesi<\/span><\/h3>\n<p>PHP tabanl\u0131 bir WordPress sayfas\u0131n\u0131n dinamik i\u015flendi\u011fi senaryoda TTFB de\u011ferleri \u00e7o\u011fu zaman 300\u2013800ms aral\u0131\u011f\u0131nda seyreder (uygulamaya, veritaban\u0131na ve network\u2019e g\u00f6re). Varnish ile cache hit oran\u0131 y\u00fcksek oldu\u011funda:<\/p>\n<ul>\n<li>TTFB de\u011ferleri 20\u201360ms band\u0131na kadar inebilir.<\/li>\n<li>CDN ile birlikte kullan\u0131ld\u0131\u011f\u0131nda, ziyaret\u00e7inin lokasyonuna g\u00f6re 10\u201340ms seviyeleri bile g\u00f6r\u00fclebilir.<\/li>\n<\/ul>\n<p>Bu d\u00fc\u015f\u00fc\u015f, <strong>Core Web Vitals<\/strong> metriklerinde \u00f6zellikle <strong>TTFB<\/strong> ve <strong>LCP (Largest Contentful Paint)<\/strong> taraf\u0131nda do\u011frudan puan kazand\u0131r\u0131r. Sunucu taraf\u0131 metriklerin SEO ve kullan\u0131c\u0131 deneyimine etkisini detayl\u0131ca anlatt\u0131\u011f\u0131m\u0131z <a href=\"https:\/\/www.dchost.com\/blog\/core-web-vitals-ve-hosting-altyapisi-ttfb-lcp-ve-clsyi-sunucu-tarafinda-iyilestirme-rehberi\/\">Core Web Vitals ve hosting altyap\u0131s\u0131 rehberini<\/a> de bununla birlikte okuman\u0131z faydal\u0131 olur.<\/p>\n<h3><span id=\"2_RPS_Request_Per_Second_Kapasitesinin_Artmasi\">2) RPS (Request Per Second) Kapasitesinin Artmas\u0131<\/span><\/h3>\n<p>Varsay\u0131msal bir \u00f6rnek \u00fczerinden gidelim:<\/p>\n<ul>\n<li>\u00d6ncesinde: Tek bir NVMe VPS \u00fczerinde Nginx + PHP-FPM ile saniyede 150\u2013200 istek civar\u0131nda CPU %80\u201390&#8217;lara vuruyor, tepki s\u00fcreleri uzamaya ba\u015fl\u0131yor.<\/li>\n<li>Varnish sonras\u0131: Ayn\u0131 VPS \u00fczerinde, %80+ cache hit oran\u0131yla saniyede 800\u20131500 iste\u011fe kadar \u00f6l\u00e7eklenebildi\u011finizi g\u00f6r\u00fcyorsunuz; \u00e7\u00fcnk\u00fc PHP-FPM&#8217;e ula\u015fan istek say\u0131s\u0131 dramatik bi\u00e7imde azalm\u0131\u015f durumda.<\/li>\n<\/ul>\n<p>Bu fark, \u00f6zellikle kampanya d\u00f6nemlerinde trafik patlamalar\u0131 ya\u015fayan e-ticaret sitelerinde ve haber portallar\u0131nda adeta sigorta i\u015flevi g\u00f6r\u00fcyor. Y\u00fck testlerini planlarken, Varnish \u00f6ncesi ve sonras\u0131 kapasite fark\u0131n\u0131 \u00f6l\u00e7mek i\u00e7in <a href=\"https:\/\/www.dchost.com\/blog\/trafik-patlamasindan-once-load-test-yapmak-k6-jmeter-ve-locust-ile-kapasite-olcme-rehberi\/\">k6, JMeter ve Locust ile load test rehberimizde<\/a> anlatt\u0131\u011f\u0131m\u0131z senaryolardan yararlanabilirsiniz.<\/p>\n<h3><span id=\"3_CPU_IO_ve_Veritabani_Yukunun_Azalmasi\">3) CPU, I\/O ve Veritaban\u0131 Y\u00fck\u00fcn\u00fcn Azalmas\u0131<\/span><\/h3>\n<p>Varnish&#8217;in as\u0131l g\u00fczelli\u011fi, uygulama koduna dokunmadan &#8220;yukar\u0131dan&#8221; katman ekleyerek altyap\u0131y\u0131 rahatlatmas\u0131d\u0131r:<\/p>\n<ul>\n<li>PHP-FPM i\u015flem havuzlar\u0131 \u00e7ok daha az yo\u011fun olur, <code>pm.max_children<\/code> limitlerine dayanma ihtimali azal\u0131r.<\/li>\n<li>Veritaban\u0131na giden sorgu say\u0131s\u0131 ciddi bi\u00e7imde d\u00fc\u015fer, InnoDB buffer pool daha verimli kullan\u0131l\u0131r.<\/li>\n<li>Disk I\/O, \u00f6zellikle log yazma ve ge\u00e7ici dosya olu\u015fturma taraf\u0131nda hafifler.<\/li>\n<\/ul>\n<p>Biz DCHost olarak genellikle Varnish kurulumu yapt\u0131\u011f\u0131m\u0131z projelerde, e\u015f zamanl\u0131 olarak <a href=\"https:\/\/www.dchost.com\/blog\/wordpress-ve-woocommerce-icin-php-fpm-ayarlari-pm-pm-max_children-ve-pm-max_requests-hesaplama-rehberi\/\">PHP-FPM havuz ayarlar\u0131n\u0131<\/a> ve veritaban\u0131 konfig\u00fcrasyonlar\u0131n\u0131 da elden ge\u00e7iriyoruz. B\u00f6ylece \u00f6nbellek katman\u0131ndan gelen kazan\u0131mlar, uygulama katman\u0131nda da bo\u015fa gitmemi\u015f oluyor.<\/p>\n<h2><span id=\"Gelismis_Konular_Mikro_Onbellekleme_PURGE_ve_Izleme\">Geli\u015fmi\u015f Konular: Mikro \u00d6nbellekleme, PURGE ve \u0130zleme<\/span><\/h2>\n<p>Temel kurulumdan sonra Varnish&#8217;i ger\u00e7ekten \u00fcretim-haz\u0131r hale getirmek i\u00e7in birka\u00e7 geli\u015fmi\u015f konuyu da hesaba katmak gerekir.<\/p>\n<h3><span id=\"Mikro_Onbellekleme_Microcaching\">Mikro \u00d6nbellekleme (Microcaching)<\/span><\/h3>\n<p>Baz\u0131 projelerde tam sayfa cache kullanmak yerine veya yan\u0131nda, 1\u20135 saniyelik <strong>mikro \u00f6nbellekleme<\/strong> \u00e7ok iyi sonu\u00e7lar verir. \u00d6zellikle &#8220;yar\u0131 dinamik&#8221; sayfalarda (listeler, arama sonu\u00e7lar\u0131, yo\u011fun API istekleri) backend&#8217;i gev\u015fetmek i\u00e7in birebirdir.<\/p>\n<p>Bu fikir Nginx FastCGI cache taraf\u0131nda da y\u0131llard\u0131r uygulan\u0131yor; detaylar\u0131n\u0131 <a href=\"https:\/\/www.dchost.com\/blog\/nginx-mikro-onbellekleme-ile-php-uygulamalarini-ucurmak-1-5-sn-cache-bypass-ve-purge-ne-zaman-nasil\/\">Nginx mikro \u00f6nbellekleme rehberimizde<\/a> anlatt\u0131k. Ayn\u0131 prensibi Varnish \u00fczerinde de kullanabilirsiniz:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">sub vcl_backend_response {\n    if (beresp.ttl &lt;= 0s || beresp.status &gt;= 500) {\n        # Hata cevab\u0131n\u0131 k\u0131sa s\u00fcreli\u011fine sakla, stale-if-error senaryolar\u0131 i\u00e7in\n        set beresp.ttl = 10s;\n    } else {\n        # Normal sayfalar i\u00e7in mikro cache\n        set beresp.ttl = 5s;\n    }\n}\n<\/code><\/pre>\n<p>Bu yakla\u015f\u0131m, h\u0131zl\u0131 de\u011fi\u015fen ama her istekte birebir g\u00fcncel olmas\u0131na gerek olmayan API \u00e7\u0131kt\u0131lar\u0131 veya liste sayfalar\u0131nda olduk\u00e7a etkilidir.<\/p>\n<h3><span id=\"PURGE_BAN_Onbellegi_Uygulamadan_Temizlemek\">PURGE \/ BAN: \u00d6nbelle\u011fi Uygulamadan Temizlemek<\/span><\/h3>\n<p>Varnish kulland\u0131\u011f\u0131n\u0131zda, i\u00e7erik g\u00fcncellendi\u011finde (\u00f6rne\u011fin WordPress\u2019te yaz\u0131 kaydedildi\u011finde) ilgili sayfalar\u0131n \u00f6nbelle\u011fini temizlemek i\u00e7in bir mekanizma kurman\u0131z gerekir. \u0130ki yayg\u0131n y\u00f6ntem:<\/p>\n<ul>\n<li><strong>PURGE:<\/strong> Belirli bir URL i\u00e7in cache\u2019i tamamen siler.<\/li>\n<li><strong>BAN:<\/strong> Belirli bir pattern\u2019e uyan objeleri ge\u00e7ersiz i\u015faretler, yeni istekler geldi\u011finde yenileriyle de\u011fi\u015ftirir.<\/li>\n<\/ul>\n<p>\u00d6rnek PURGE tan\u0131m\u0131:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">acl purge {\n    &quot;127.0.0.1&quot;;\n    &quot;::1&quot;;\n}\n\nsub vcl_recv {\n    if (req.method == &quot;PURGE&quot;) {\n        if (!client.ip ~ purge) {\n            return (synth(405, &quot;Not allowed.&quot;));\n        }\n        return (purge);\n    }\n}\n<\/code><\/pre>\n<p>B\u00f6ylece uygulaman\u0131zdan veya y\u00f6netim scriptlerinden, \u00f6rne\u011fin <code>curl -X PURGE http:\/\/example.com\/yazim<\/code> komutuyla ilgili sayfan\u0131n \u00f6nbelle\u011fini temizleyebilirsiniz. WordPress taraf\u0131nda bu i\u015flemi Varnish entegrasyon eklentileriyle otomatik hale getirmek de m\u00fcmk\u00fcn.<\/p>\n<h3><span id=\"Varnish_Loglama_ve_Izleme\">Varnish Loglama ve \u0130zleme<\/span><\/h3>\n<p>Performans\u0131n\u0131 g\u00f6z\u00fcn\u00fczle g\u00f6rmek i\u00e7in Varnish\u2019in sundu\u011fu ara\u00e7lar olduk\u00e7a faydal\u0131d\u0131r:<\/p>\n<ul>\n<li><code>varnishstat<\/code> \u2192 Cache hit\/miss oranlar\u0131, backend iste\u011fi say\u0131lar\u0131, bellek kullan\u0131m\u0131 vb.<\/li>\n<li><code>varnishlog<\/code> \u2192 Belirli bir iste\u011fin ba\u015ftan sona nas\u0131l i\u015flendi\u011fini detayl\u0131 g\u00f6sterir.<\/li>\n<li><code>varnishhist<\/code> \u2192 Hit\/miss da\u011f\u0131l\u0131m\u0131n\u0131 histogram olarak sunar.<\/li>\n<\/ul>\n<p>Biz DCHost\u2019ta y\u00fcksek trafikli projelerde Varnish metriklerini genellikle Prometheus + Grafana ile topluyor, alarmlar kuruyoruz. Bu sayede cache hit oran\u0131 beklenmedik \u015fekilde d\u00fc\u015ft\u00fc\u011f\u00fcnde (yanl\u0131\u015f deploy, k\u00f6t\u00fc yap\u0131land\u0131rma, uygulama g\u00fcncellemesi vb.) h\u0131zl\u0131ca m\u00fcdahale etmek m\u00fcmk\u00fcn oluyor.<\/p>\n<h2><span id=\"Varnish_mi_Nginx_FastCGI_Cache_mi_CDN_mi_Dogru_Kombinasyon\">Varnish mi, Nginx FastCGI Cache mi, CDN mi? Do\u011fru Kombinasyon<\/span><\/h2>\n<p>\u00d6nbellekleme d\u00fcnyas\u0131nda sadece Varnish yok; Nginx FastCGI cache, LiteSpeed Cache, Redis\/Memcached object cache ve CDN edge cache gibi katmanlar da devrede. DCHost taraf\u0131nda s\u0131k kulland\u0131\u011f\u0131m\u0131z pratik kombinasyonlar \u015f\u00f6yle:<\/p>\n<ul>\n<li><strong>Basit yap\u0131:<\/strong> Nginx FastCGI cache + taray\u0131c\u0131\/CDN cache ba\u015fl\u0131klar\u0131<\/li>\n<li><strong>Orta seviye:<\/strong> Varnish tam sayfa cache + Redis object cache + CDN<\/li>\n<li><strong>\u0130leri seviye:<\/strong> Varnish origin cache + global CDN edge cache + veritaban\u0131 replikasyonu<\/li>\n<\/ul>\n<p>Varnish, \u00f6zellikle \u00e7oklu backend, geli\u015fmi\u015f VCL kurallar\u0131 ve y\u00fcksek trafik alt\u0131nda \u00f6l\u00e7eklenebilirlik arayan projelerde <strong>oyun de\u011fi\u015ftirici<\/strong> bir rol \u00fcstleniyor. Ancak k\u00fc\u00e7\u00fck bir WooCommerce ma\u011fazas\u0131 i\u00e7in Nginx FastCGI cache de gayet yeterli olabilir; bu tarz kararlar\u0131 verirken <a href=\"https:\/\/www.dchost.com\/blog\/wordpresste-tam-sayfa-onbellekleme-nasil-kurulur-nginx-fastcgi-cache-varnish-ve-litespeed-cache-ile-woocommercee-nazikce-dokunmak\/\">WordPress\u2019te tam sayfa \u00f6nbellekleme \u00e7\u00f6z\u00fcmlerini kar\u015f\u0131la\u015ft\u0131rd\u0131\u011f\u0131m\u0131z<\/a> yaz\u0131ya da g\u00f6z atman\u0131z\u0131 \u00f6neririm.<\/p>\n<h2><span id=\"DCHost_Altyapisinda_Varnish_Kullanirken_Dikkat_Ettigimiz_Noktalar\">DCHost Altyap\u0131s\u0131nda Varnish Kullan\u0131rken Dikkat Etti\u011fimiz Noktalar<\/span><\/h2>\n<p>DCHost olarak, Varnish\u2019i \u00f6zellikle \u015fu ortamlarda s\u0131k\u00e7a konumland\u0131r\u0131yoruz:<\/p>\n<ul>\n<li>NVMe VPS\u2019ler \u00fczerinde y\u00fcksek trafikli WordPress\/Laravel projeleri<\/li>\n<li>Dedicated sunucularda b\u00fcy\u00fck kataloglu WooCommerce, Magento ma\u011fazalar\u0131<\/li>\n<li>Colocation altyap\u0131s\u0131nda kendi donan\u0131m\u0131n\u0131 bar\u0131nd\u0131ran m\u00fc\u015fterilerin \u00f6n\u00fcne gelen reverse proxy katman\u0131<\/li>\n<\/ul>\n<p>Uygulamada dikkat etti\u011fimiz temel prensipler:<\/p>\n<ul>\n<li>\u00d6nce uygulaman\u0131n mant\u0131\u011f\u0131n\u0131 ve dinamik b\u00f6lgelerini anlamak, sonra cache kurallar\u0131n\u0131 yazmak<\/li>\n<li>Her zaman \u00f6nce staging ortam\u0131nda denemek, load test ile kapasiteyi \u00f6l\u00e7mek<\/li>\n<li>Varnish + PHP-FPM + veritaban\u0131 \u00fc\u00e7l\u00fcs\u00fcn\u00fc birlikte optimize etmek<\/li>\n<li>Cache hit oran\u0131n\u0131 ve backend y\u00fck\u00fcn\u00fc s\u00fcrekli izlemek, beklenmedik d\u00fc\u015f\u00fc\u015flere kar\u015f\u0131 alarmlar koymak<\/li>\n<\/ul>\n<h2><span id=\"Ozet_ve_Sonraki_Adimlar_Varnish_ile_Trafik_Patlamalarina_Karsi_Hazirlikli_Olun\">\u00d6zet ve Sonraki Ad\u0131mlar: Varnish ile Trafik Patlamalar\u0131na Kar\u015f\u0131 Haz\u0131rl\u0131kl\u0131 Olun<\/span><\/h2>\n<p>Varnish Cache, Nginx veya Apache\u2019nin \u00f6n\u00fcne konumland\u0131r\u0131ld\u0131\u011f\u0131nda, \u00f6zellikle PHP tabanl\u0131 dinamik sitelerde <strong>en y\u00fcksek yat\u0131r\u0131m getirisine sahip optimizasyon katmanlar\u0131ndan biri<\/strong> haline geliyor. Do\u011fru VCL kurallar\u0131yla giri\u015f yapm\u0131\u015f kullan\u0131c\u0131lar\u0131, sepet ve \u00f6deme ad\u0131mlar\u0131n\u0131, ki\u015fiselle\u015ftirilmi\u015f sayfalar\u0131 cache d\u0131\u015f\u0131 b\u0131rak\u0131rken; geri kalan geni\u015f ziyaret\u00e7i kitlesi i\u00e7in HTML \u00e7\u0131kt\u0131s\u0131n\u0131 RAM \u00fczerinde tutup milisaniyeler i\u00e7inde sunabiliyorsunuz. Sonu\u00e7 olarak:<\/p>\n<ul>\n<li>TTFB ve genel sayfa y\u00fcklenme s\u00fcreleri ciddi oranda k\u0131sal\u0131yor, Core Web Vitals skorlar\u0131n\u0131z iyile\u015fiyor.<\/li>\n<li>Ayn\u0131 donan\u0131m ile \u00e7ok daha y\u00fcksek RPS de\u011ferlerine ula\u015f\u0131p trafik patlamalar\u0131na dayan\u0131kl\u0131 hale geliyorsunuz.<\/li>\n<li>PHP-FPM ve veritaban\u0131 katman\u0131ndaki bask\u0131 azald\u0131\u011f\u0131 i\u00e7in, hem hata oranlar\u0131 hem de &#8220;ani yava\u015flama&#8221; \u015fikayetleri belirgin \u015fekilde d\u00fc\u015f\u00fcyor.<\/li>\n<\/ul>\n<p>E\u011fer h\u00e2lihaz\u0131rda Nginx\/Apache + PHP-FPM ile \u00e7al\u0131\u015fan bir siteniz varsa ve \u00f6zellikle yo\u011fun saatlerde CPU, I\/O veya veritaban\u0131 darbo\u011faz\u0131 ya\u015f\u0131yorsan\u0131z, sonraki ad\u0131m\u0131n\u0131z \u00e7ok net olabilir: <strong>\u00f6nce iyi bir kapasite analizi ve ard\u0131ndan Varnish tabanl\u0131 reverse proxy katman\u0131 eklemek<\/strong>. Biz DCHost taraf\u0131nda, ihtiyaca g\u00f6re tek bir NVMe VPS \u00fczerinde kompakt bir Varnish mimarisi kurmaktan, birden fazla dedicated sunucu ve colocation altyap\u0131s\u0131n\u0131 kapsayan \u00e7ok katmanl\u0131 yap\u0131land\u0131rmalara kadar farkl\u0131 senaryolarda m\u00fc\u015fterilerimize destek veriyoruz.<\/p>\n<p>Varnish kurulumuna ba\u015flamadan \u00f6nce, projenizin gereksinimlerini ve b\u00fcy\u00fcme hedeflerini netle\u015ftirmek isterseniz, mevcut makalelerimizden de yararlanabilirsiniz: load test i\u00e7in kapasite analizi, Core Web Vitals i\u00e7in sunucu taraf\u0131 optimizasyon ve tam sayfa \u00f6nbellekleme yaz\u0131lar\u0131 bu yolculukta sa\u011flam bir temel olu\u015fturacakt\u0131r. Sonras\u0131nda, DCHost \u00fczerinde kullanaca\u011f\u0131n\u0131z NVMe VPS, dedicated sunucu veya colocation altyap\u0131s\u0131na, Varnish ile g\u00fc\u00e7lendirilmi\u015f bir reverse proxy katman\u0131 ekleyerek sitenizi hem h\u0131zl\u0131 hem de \u00f6l\u00e7eklenebilir hale getirebilirsiniz.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\u0130&ccedil;indekiler1 Varnish Cache ile Reverse Proxy Mimarisi Neden Bu Kadar Fark Yarat\u0131yor?2 Varnish Cache Nedir, Nginx\/Apache ile Roller Nas\u0131l Ayr\u0131l\u0131r?2.1 Temel rol da\u011f\u0131l\u0131m\u01312.2 HTTP\/HTTPS konusu: TLS nerede bitmeli?3 Mimari Tasar\u0131m: Tek VPS, \u00c7oklu VPS ve DCHost \u00dczerinde Ger\u00e7ek\u00e7i Senaryolar3.1 1) Tek VPS \u00dczerinde Hepsi Bir Arada (K\u00fc\u00e7\u00fck\/Orta \u00d6l\u00e7ek)3.2 2) Ayr\u0131 Varnish Katman\u0131 + Ayr\u0131 Uygulama [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3744,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-3743","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-teknoloji"],"_links":{"self":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/3743","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/comments?post=3743"}],"version-history":[{"count":0,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/3743\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/3744"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=3743"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=3743"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=3743"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}