{"id":32016,"date":"2025-10-16T19:41:15","date_gmt":"2025-10-16T16:41:15","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=32016"},"modified":"2025-10-16T19:41:15","modified_gmt":"2025-10-16T16:41:15","slug":"ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/","title":{"rendered":"Ubuntu 13.10 \u00dczerinde Varnish ve Nginx ile K\u00fcmelenmi\u015f Web Sunucusu Yap\u0131land\u0131rmas\u0131"},"content":{"rendered":"<p><body><\/p>\n<h2>Ubuntu 13.10 \u00dczerinde Varnish ve Nginx ile K\u00fcmelenmi\u015f Web Sunucusu Yap\u0131land\u0131rmas\u0131<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda, web uygulamalar\u0131n\u0131n ve sitelerinin y\u00fcksek performans, s\u00fcrekli eri\u015filebilirlik ve \u00f6l\u00e7eklenebilirlik sunmas\u0131 kritik bir \u00f6neme sahiptir. Kullan\u0131c\u0131 beklentileri artt\u0131k\u00e7a, tek bir sunucunun t\u00fcm y\u00fck\u00fc kald\u0131rmas\u0131 giderek zorla\u015fmaktad\u0131r. Bu durum, web sunucular\u0131n\u0131 k\u00fcmeleme (clustering) ihtiyac\u0131n\u0131 do\u011furmu\u015ftur. K\u00fcmelenmi\u015f bir yap\u0131, trafik yo\u011funlu\u011funu birden fazla sunucuya da\u011f\u0131tarak hem performans\u0131 art\u0131r\u0131r hem de bir sunucunun ar\u0131zalanmas\u0131 durumunda hizmetin kesintisiz devam etmesini sa\u011flar.<\/p>\n<p>Bu makalede, Ubuntu 13.10 i\u015fletim sistemi \u00fczerinde Varnish Cache ve Nginx kullanarak nas\u0131l k\u00fcmelenmi\u015f bir web sunucusu ortam\u0131 olu\u015fturulaca\u011f\u0131n\u0131 ayr\u0131nt\u0131l\u0131 olarak ele alaca\u011f\u0131z. Nginx, hafifli\u011fi ve y\u00fcksek performans\u0131yla bilinen bir web sunucusu ve ters proxy iken, Varnish Cache, HTTP trafi\u011fini \u00f6nbelle\u011fe alarak sunucu y\u00fck\u00fcn\u00fc azaltan ve yan\u0131t s\u00fcrelerini h\u0131zland\u0131ran g\u00fc\u00e7l\u00fc bir HTTP h\u0131zland\u0131r\u0131c\u0131d\u0131r. Bu iki teknolojinin birle\u015fimi, y\u00fcksek trafi\u011fe sahip web siteleri i\u00e7in sa\u011flam, h\u0131zl\u0131 ve \u00f6l\u00e7eklenebilir bir altyap\u0131 sunar. Ubuntu 13.10 eski bir s\u00fcr\u00fcm olsa da, bu makaledeki temel kavramlar ve yap\u0131land\u0131rma ad\u0131mlar\u0131, daha yeni Ubuntu s\u00fcr\u00fcmleri i\u00e7in de uyarlanabilir bir ba\u015flang\u0131\u00e7 noktas\u0131 sa\u011flayacakt\u0131r.<\/p>\n<h3>Neden K\u00fcmelenmi\u015f Web Sunucusu?<\/h3>\n<p>Web uygulamalar\u0131n\u0131n ve sitelerinin k\u00fcmelenmi\u015f bir yap\u0131da \u00e7al\u0131\u015ft\u0131r\u0131lmas\u0131, \u00e7e\u015fitli avantajlar sunar:<\/p>\n<p>*   <strong>Y\u00fcksek Eri\u015filebilirlik (High Availability):<\/strong> Tek bir sunucunun ar\u0131zalanmas\u0131 durumunda, di\u011fer sunucular hizmeti devralarak kesintiyi \u00f6nler. Bu, kullan\u0131c\u0131lar i\u00e7in s\u00fcrekli eri\u015filebilir bir deneyim sa\u011flar.<br \/>\n*   <strong>\u00d6l\u00e7eklenebilirlik (Scalability):<\/strong> Trafik artt\u0131\u011f\u0131nda, sisteme kolayca ek Nginx sunucular\u0131 eklenerek yatay \u00f6l\u00e7eklenme sa\u011flanabilir. Varnish, bu yeni sunucular\u0131 otomatik olarak arka u\u00e7 havuzuna dahil edebilir.<br \/>\n*   <strong>Performans (Performance):<\/strong> Gelen istekler birden fazla sunucuya da\u011f\u0131t\u0131ld\u0131\u011f\u0131 i\u00e7in her sunucunun \u00fczerindeki y\u00fck azal\u0131r. Ayr\u0131ca Varnish Cache, s\u0131k\u00e7a istenen i\u00e7eri\u011fi \u00f6nbelle\u011fe alarak sunucuya ula\u015fan istek say\u0131s\u0131n\u0131 minimize eder ve yan\u0131t s\u00fcrelerini \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zland\u0131r\u0131r.<br \/>\n*   <strong>Y\u00fck Dengeleme (Load Balancing):<\/strong> Varnish, gelen istekleri yap\u0131land\u0131r\u0131lm\u0131\u015f arka u\u00e7 Nginx sunucular\u0131 aras\u0131nda da\u011f\u0131tarak her sunucunun e\u015fit veya belirlenen a\u011f\u0131rl\u0131kta y\u00fck almas\u0131n\u0131 sa\u011flar. Bu, kaynaklar\u0131n daha verimli kullan\u0131lmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong>Kaynak Verimlili\u011fi:<\/strong> Statik i\u00e7eriklerin Varnish taraf\u0131ndan \u00f6nbelle\u011fe al\u0131nmas\u0131, Nginx sunucular\u0131n\u0131n yaln\u0131zca dinamik i\u00e7erik i\u015fleme veya \u00f6nbellekte bulunmayan isteklerle ilgilenmesini sa\u011flar, bu da CPU ve bellek kullan\u0131m\u0131n\u0131 optimize eder.<\/p>\n<h3>Mimari Tasar\u0131m<\/h3>\n<p>Olu\u015fturaca\u011f\u0131m\u0131z k\u00fcmelenmi\u015f web sunucusu mimarisi a\u015fa\u011f\u0131daki bile\u015fenlerden olu\u015facakt\u0131r:<\/p>\n<p>1.  <strong>\u0130stemciler (Clients):<\/strong> Web taray\u0131c\u0131lar\u0131 veya di\u011fer uygulamalar arac\u0131l\u0131\u011f\u0131yla web sitesine eri\u015fen kullan\u0131c\u0131lar.<br \/>\n2.  <strong>Varnish Cache Sunucusu:<\/strong> Gelen t\u00fcm HTTP isteklerini kar\u015f\u0131layan \u00f6n u\u00e7 sunucu. \u0130\u00e7eri\u011fi \u00f6nbelle\u011fe al\u0131r ve \u00f6nbellekte bulunmayan veya \u00f6nbelle\u011fe al\u0131nmamas\u0131 gereken istekleri arka u\u00e7 Nginx sunucular\u0131na iletir. Ayn\u0131 zamanda bir y\u00fck dengeleyici g\u00f6revi g\u00f6rerek istekleri birden fazla Nginx sunucusu aras\u0131nda da\u011f\u0131t\u0131r.<br \/>\n3.  <strong>Nginx Web Sunucular\u0131 (Backend Servers):<\/strong> Ger\u00e7ek web uygulamas\u0131n\u0131 veya i\u00e7eri\u011fi bar\u0131nd\u0131ran sunucular. Varnish&#8217;ten gelen istekleri i\u015fler ve yan\u0131tlar\u0131 Varnish&#8217;e geri g\u00f6nderir. K\u00fcmelenmi\u015f yap\u0131 i\u00e7in en az iki Nginx sunucusu kullanaca\u011f\u0131z.<\/p>\n<p>Bu yap\u0131land\u0131rmada, istemciler do\u011frudan Nginx sunucular\u0131yla ileti\u015fim kurmaz; t\u00fcm trafik Varnish \u00fczerinden ge\u00e7er. Bu, Varnish&#8217;in hem bir g\u00fcvenlik katman\u0131 hem de bir performans katman\u0131 olarak hareket etmesini sa\u011flar.<\/p>\n<p><strong>\u00d6rnek IP Adresleri ve Rolleri:<\/strong><br \/>\n*   <strong>Varnish Sunucusu:<\/strong> <code>192.168.1.10<\/code> (Genel eri\u015fime a\u00e7\u0131k IP)<br \/>\n*   <strong>Nginx Sunucusu 1:<\/strong> <code>192.168.1.11<\/code> (Yaln\u0131zca Varnish taraf\u0131ndan eri\u015filebilir dahili IP)<br \/>\n*   <strong>Nginx Sunucusu 2:<\/strong> <code>192.168.1.12<\/code> (Yaln\u0131zca Varnish taraf\u0131ndan eri\u015filebilir dahili IP)<\/p>\n<h3>Gereksinimler<\/h3>\n<p>Bu yap\u0131land\u0131rma i\u00e7in a\u015fa\u011f\u0131daki gereksinimlere ihtiyac\u0131m\u0131z olacak:<\/p>\n<p>*   <strong>\u00dc\u00e7 Adet Ubuntu 13.10 Sunucusu:<\/strong><br \/>\n    *   Bir tanesi Varnish Cache i\u00e7in.<br \/>\n    *   \u0130ki tanesi Nginx web sunucular\u0131 i\u00e7in.<br \/>\n    *   Her sunucunun statik bir IP adresine sahip olmas\u0131 tercih edilir.<br \/>\n*   <strong>SSH Eri\u015fimi:<\/strong> Her sunucuya SSH \u00fczerinden eri\u015fim ve <code>sudo<\/code> yetkilerine sahip bir kullan\u0131c\u0131.<br \/>\n*   <strong>Temel Linux Bilgisi:<\/strong> Komut sat\u0131r\u0131 kullan\u0131m\u0131, dosya d\u00fczenleme (<code>nano<\/code> veya <code>vi<\/code>), servis y\u00f6netimi (<code>service<\/code> komutlar\u0131).<\/p>\n<h3>Ad\u0131m 1: Temel Sistem G\u00fcncellemesi ve \u00d6n Haz\u0131rl\u0131klar<\/h3>\n<p>Her \u00fc\u00e7 sunucuda da (Varnish ve Nginx sunucular\u0131) a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 uygulayarak sistemleri g\u00fcncelleyelim ve gerekli paketleri kural\u0131m.<\/p>\n<h4>Sistem G\u00fcncellemesi<\/h4>\n<p>\u00d6ncelikle her sunucuda paket listesini g\u00fcncelleyelim ve mevcut paketleri y\u00fckseltelim:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get update\nsudo apt-get upgrade -y<\/code><\/pre>\n<h4>Gerekli Ara\u00e7lar\u0131n Kurulumu<\/h4>\n<p>Baz\u0131 temel a\u011f ara\u00e7lar\u0131 ve metin d\u00fczenleyicileri i\u015fimizi kolayla\u015ft\u0131racakt\u0131r:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install curl wget nano -y<\/code><\/pre>\n<h3>Ad\u0131m 2: Nginx Web Sunucular\u0131n\u0131n Yap\u0131land\u0131r\u0131lmas\u0131<\/h3>\n<p>Bu ad\u0131mlar\u0131 <code>192.168.1.11<\/code> ve <code>192.168.1.12<\/code> IP adreslerine sahip her iki Nginx sunucusunda da uygulayaca\u011f\u0131z.<\/p>\n<h4>Nginx Kurulumu<\/h4>\n<p>Nginx paketini kural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install nginx -y<\/code><\/pre>\n<p>Kurulumdan sonra Nginx servisi otomatik olarak ba\u015flayacakt\u0131r. Durumunu kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">service nginx status<\/code><\/pre>\n<h4>Nginx Sanal Host Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Her Nginx sunucusunda, web sitemiz i\u00e7in bir sanal host yap\u0131land\u0131rmas\u0131 olu\u015ftural\u0131m. Varsay\u0131lan olarak Nginx, 80 numaral\u0131 portta dinler. Ancak Varnish \u00f6n\u00fcnde olaca\u011f\u0131 i\u00e7in, Nginx&#8217;in ba\u015fka bir portta (\u00f6rne\u011fin 8080) dinlemesini sa\u011flayaca\u011f\u0131z. Bu, Varnish ile Nginx aras\u0131ndaki ileti\u015fimin dahili kalmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Varsay\u0131lan yap\u0131land\u0131rma dosyas\u0131n\u0131 d\u00fczenleyelim veya yeni bir tane olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/nginx\/sites-available\/default<\/code><\/pre>\n<p>Dosyan\u0131n i\u00e7eri\u011fini a\u015fa\u011f\u0131daki gibi g\u00fcncelleyelim. <code>listen<\/code> y\u00f6nergesini <code>8080<\/code> olarak de\u011fi\u015ftirmeyi unutmay\u0131n:<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 8080 default_server;\n    listen [::]:8080 default_server ipv6only=on;\n\n    root \/usr\/share\/nginx\/html;\n    index index.html index.htm;\n\n    # Make sure that your domain name is set correctly\n    server_name localhost; # Buraya kendi alan ad\u0131n\u0131z\u0131 yazabilirsiniz, ancak Varnish arkas\u0131nda oldu\u011fu i\u00e7in localhost da yeterlidir.\n\n    location \/ {\n        try_files $uri $uri\/ =404;\n    }\n\n    # \u0130stek ba\u015fl\u0131klar\u0131na sunucu ad\u0131n\u0131 ekleyelim, b\u00f6ylece hangi Nginx sunucusundan yan\u0131t geldi\u011fini g\u00f6rebiliriz.\n    add_header X-Nginx-Server \"$hostname\";\n}<\/code><\/pre>\n<p>De\u011fi\u015fiklikleri kaydedip (Ctrl+O, Enter, Ctrl+X) Nginx yap\u0131land\u0131rmas\u0131n\u0131 test edelim ve servisi yeniden ba\u015flatal\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo nginx -t\nsudo service nginx restart<\/code><\/pre>\n<h4>\u00d6rnek Web \u0130\u00e7eri\u011fi<\/h4>\n<p>Hangi Nginx sunucusundan yan\u0131t ald\u0131\u011f\u0131m\u0131z\u0131 g\u00f6rmek i\u00e7in her sunucuda farkl\u0131 bir <code>index.html<\/code> dosyas\u0131 olu\u015ftural\u0131m.<\/p>\n<p><strong>Nginx Sunucusu 1 (<code>192.168.1.11<\/code>) \u00fczerinde:<\/strong><\/p>\n<pre><code class=\"language-bash\">echo \"<p>Bu i\u00e7erik 192.168.1.11 adresinden sunulmaktad\u0131r.<\/p>\" | sudo tee \/usr\/share\/nginx\/html\/index.html<\/code><\/pre>\n<p><strong>Nginx Sunucusu 2 (<code>192.168.1.12<\/code>) \u00fczerinde:<\/strong><\/p>\n<pre><code class=\"language-bash\">echo \"<p>Bu i\u00e7erik 192.168.1.12 adresinden sunulmaktad\u0131r.<\/p>\" | sudo tee \/usr\/share\/nginx\/html\/index.html<\/code><\/pre>\n<p>Bu a\u015famada, her Nginx sunucusuna do\u011frudan IP adresi ve port (\u00f6rne\u011fin <code>http:\/\/192.168.1.11:8080<\/code>) \u00fczerinden eri\u015ferek \u00e7al\u0131\u015ft\u0131klar\u0131ndan emin olabilirsiniz.<\/p>\n<h3>Ad\u0131m 3: Varnish Cache Sunucusunun Yap\u0131land\u0131r\u0131lmas\u0131<\/h3>\n<p>Bu ad\u0131mlar\u0131 <code>192.168.1.10<\/code> IP adresine sahip Varnish sunucusunda uygulayaca\u011f\u0131z.<\/p>\n<h4>Varnish Kurulumu<\/h4>\n<p>Varnish paketini kural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install varnish -y<\/code><\/pre>\n<h4>Varnish Temel Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Varnish&#8217;in varsay\u0131lan olarak hangi portta dinleyece\u011fini ve hangi yap\u0131land\u0131rma dosyas\u0131n\u0131 kullanaca\u011f\u0131n\u0131 ayarlamam\u0131z gerekiyor. Ubuntu 13.10&#8217;da bu genellikle <code>\/etc\/default\/varnish<\/code> veya <code>\/etc\/varnish\/varnish.params<\/code> dosyas\u0131nda yap\u0131l\u0131r. Ubuntu 13.10 i\u00e7in <code>\/etc\/default\/varnish<\/code> dosyas\u0131n\u0131 d\u00fczenleyece\u011fiz.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/default\/varnish<\/code><\/pre>\n<p>Bu dosyada <code>VARNISH_LISTEN_PORT<\/code> de\u011ferini 80 olarak de\u011fi\u015ftirelim veya ilgili sat\u0131r\u0131 bulup ayarlayal\u0131m. Ayr\u0131ca, <code>DAEMON_OPTS<\/code> i\u00e7inde <code>-a<\/code> parametresi ile hangi IP ve portta dinleyece\u011fini belirtmemiz gerekebilir. E\u011fer yoksa, a\u015fa\u011f\u0131daki gibi bir sat\u0131r ekleyelim\/d\u00fczenleyelim:<\/p>\n<pre><code class=\"language-\"># The port Varnish should listen on.\nVARNISH_LISTEN_PORT=80\n\n<h2>The configuration file to use.<\/h2>\nVARNISH_VCL_CONF=\/etc\/varnish\/default.vcl\n\n<h2>Varnish storage parameters.<\/h2>\nVARNISH_STORAGE=\"malloc,256M\" # 256MB bellek i\u00e7i \u00f6nbellek kullan\u0131r. \u0130htiyaca g\u00f6re art\u0131r\u0131labilir.\n\n<h2>Other daemon options.<\/h2>\nDAEMON_OPTS=\"-a :80 \\\n             -T localhost:6082 \\\n             -f \/etc\/varnish\/default.vcl \\\n             -S \/etc\/varnish\/secret \\\n             -s ${VARNISH_STORAGE}\"<\/code><\/pre>\n<p><code>VARNISH_LISTEN_PORT<\/code>&#8216;u 80 olarak ayarlamak, Varnish&#8217;in standart HTTP portunda dinlemesini sa\u011flar. <code>DAEMON_OPTS<\/code> i\u00e7indeki <code>-a :80<\/code> de ayn\u0131 anlama gelir. Bu dosyadaki ayarlamalar, Varnish servisinin ba\u015flang\u0131\u00e7 parametrelerini belirler.<\/p>\n<h4>Varnish Backend Tan\u0131mlamas\u0131 ve VCL Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Varnish&#8217;in as\u0131l g\u00fcc\u00fc VCL (Varnish Configuration Language) dosyas\u0131nda yatar. Bu dosya, Varnish&#8217;in gelen istekleri nas\u0131l i\u015fleyece\u011fini, hangi arka u\u00e7 sunucular\u0131n\u0131 kullanaca\u011f\u0131n\u0131 ve hangi i\u00e7eri\u011fi \u00f6nbelle\u011fe alaca\u011f\u0131n\u0131 tan\u0131mlar.<\/p>\n<p>Varsay\u0131lan VCL dosyas\u0131n\u0131 d\u00fczenleyelim:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/varnish\/default.vcl<\/code><\/pre>\n<p>Dosyan\u0131n i\u00e7eri\u011fini a\u015fa\u011f\u0131daki gibi g\u00fcncelleyelim. Bu yap\u0131land\u0131rma, iki Nginx sunucusunu arka u\u00e7 olarak tan\u0131mlar ve istekleri bunlar aras\u0131nda da\u011f\u0131t\u0131r.<\/p>\n<pre><code class=\"language-vcl\">vcl 4.0; # Varnish 4.0 veya \u00fczeri i\u00e7in\n\n<h2>Arka u\u00e7 Nginx sunucular\u0131n\u0131 tan\u0131mla<\/h2>\nbackend web1 {\n    .host = \"192.168.1.11\"; # Nginx Sunucusu 1 IP\n    .port = \"8080\";\n    .probe = { # Sa\u011fl\u0131k kontrol\u00fc\n        .url = \"\/\";\n        .timeout = 5s;\n        .interval = 5s;\n        .window = 5;\n        .threshold = 3;\n    }\n}\n\nbackend web2 {\n    .host = \"192.168.1.12\"; # Nginx Sunucusu 2 IP\n    .port = \"8080\";\n    .probe = { # Sa\u011fl\u0131k kontrol\u00fc\n        .url = \"\/\";\n        .timeout = 5s;\n        .interval = 5s;\n        .window = 5;\n        .threshold = 3;\n    }\n}\n\n<h2>Arka u\u00e7 sunucular\u0131n\u0131 bir havuza (director) ekleyerek y\u00fck dengeleme yapal\u0131m<\/h2>\n<h2>round-robin, basit ve e\u015fit da\u011f\u0131l\u0131m sa\u011flar.<\/h2>\nsub vcl_init {\n    new web_cluster = directors.round_robin();\n    web_cluster.add_backend(web1);\n    web_cluster.add_backend(web2);\n}\n\nsub vcl_recv {\n    # Gelen iste\u011fi hangi arka uca y\u00f6nlendirece\u011fimizi belirle\n    set req.backend_hint = web_cluster.backend();\n\n    # Sa\u011fl\u0131k kontrol\u00fc i\u00e7in \u00f6zel bir URL'yi do\u011frudan ge\u00e7elim\n    if (req.url == \"\/varnish-health-check\") {\n        return (pipe); # Bu istekleri do\u011frudan arka uca ilet, Varnish kendisi i\u015flemesin\n    }\n\n    # Y\u00f6netim portuna gelen istekleri (Varnish Stat, Varnishlog vb.) do\u011frudan ge\u00e7elim\n    if (req.method == \"PURGE\") {\n        if (!client.ip ~ \"localhost\") { # Sadece localhost'tan PURGE izni ver\n            return (synth(405, \"Not allowed.\"));\n        }\n        return (purge); # \u00d6nbelle\u011fi temizle\n    }\n\n    # Sadece GET ve HEAD isteklerini \u00f6nbelle\u011fe al\n    if (req.method != \"GET\" &&\n        req.method != \"HEAD\" &&\n        req.method != \"PUT\" &&\n        req.method != \"POST\" &&\n        req.method != \"TRACE\" &&\n        req.method != \"DELETE\" &&\n        req.method != \"OPTIONS\") {\n        \/<em> Non-RFC2616 or unknown methods <\/em>\/\n        return (pipe);\n    }\n\n    if (req.method != \"GET\" && req.method != \"HEAD\") {\n        \/<em> We only deal with GET and HEAD by default <\/em>\/\n        return (pass);\n    }\n\n    # Cookie i\u00e7eren istekleri genellikle \u00f6nbelle\u011fe alma\n    if (req.http.Cookie) {\n        return (pass);\n    }\n\n    # Belirli URL'leri \u00f6nbelle\u011fe alma\n    if (req.url ~ \"^\/admin\" ||\n        req.url ~ \"^\/login\" ||\n        req.url ~ \"\\.(php|asp|aspx|jsp|cgi)$\") { # Dinamik i\u00e7erik genellikle \u00f6nbelle\u011fe al\u0131nmaz\n        return (pass);\n    }\n\n    return (hash); # \u00d6nbellekte arama yap\n}\n\nsub vcl_backend_response {\n    # Arka u\u00e7tan gelen yan\u0131tlar\u0131 i\u015fle\n    # Varsay\u0131lan olarak t\u00fcm statik i\u00e7erikleri 1 saat \u00f6nbelle\u011fe al\n    if (beresp.ttl == 0s ||\n        beresp.http.Cache-Control !~ \"max-age\" &&\n        beresp.http.Cache-Control !~ \"s-maxage\") {\n        if (beresp.http.Content-Type ~ \"text\/(css|javascript)\" ||\n            beresp.http.Content-Type ~ \"image\/(jpeg|png|gif|webp)\" ||\n            beresp.http.Content-Type ~ \"application\/pdf\") {\n            set beresp.ttl = 1h; # Statik dosyalar i\u00e7in varsay\u0131lan TTL\n        }\n    }\n\n    # Set a header to indicate if Varnish served the content\n    set beresp.http.X-Varnish-Cache = \"HIT\";\n    if (beresp.ttl <= 0s || beresp.http.Set-Cookie) {\n        set beresp.http.X-Varnish-Cache = \"MISS\";\n    }\n\n    return (deliver);\n}\n\nsub vcl_deliver {\n    # \u0130stemciye yan\u0131t\u0131 g\u00f6ndermeden \u00f6nce ba\u015fl\u0131klar\u0131 d\u00fczenle\n    # Varnish'in kendisi taraf\u0131ndan eklenen baz\u0131 ba\u015fl\u0131klar\u0131 kald\u0131rabiliriz\n    unset resp.http.X-Varnish;\n    unset resp.http.Via;\n\n    # Hangi Nginx sunucusundan yan\u0131t al\u0131nd\u0131\u011f\u0131n\u0131 g\u00f6steren ba\u015fl\u0131\u011f\u0131 koruyal\u0131m\n    # set resp.http.X-Varnish-Server = req.backend_hint.host; # Varnish 4'te bu \u015fekilde olmaz.\n\n    # Varnish hit\/miss bilgisini ekleyelim\n    if (obj.hits > 0) {\n        set resp.http.X-Varnish-Cache = \"HIT\";\n    } else {\n        set resp.http.X-Varnish-Cache = \"MISS\";\n    }\n\n    return (deliver);\n}\n\nsub vcl_hit {\n    if (obj.ttl >= 0s) {\n        return (deliver); # \u00d6nbellekteki nesne hala ge\u00e7erliyse teslim et\n    }\n    return (fetch); # Ge\u00e7ersizse veya s\u00fcresi dolmu\u015fsa arka u\u00e7tan yeniden getir\n}\n\nsub vcl_miss {\n    return (fetch); # \u00d6nbellekte yoksa arka u\u00e7tan getir\n}\n\nsub vcl_pass {\n    return (fetch); # Do\u011frudan arka u\u00e7tan getir (\u00f6nbelle\u011fe alma)\n}\n\nsub vcl_pipe {\n    return (pipe); # \u0130stemci ile arka u\u00e7 aras\u0131nda do\u011frudan boru hatt\u0131 olu\u015ftur\n}\n\nsub vcl_hash {\n    hash_data(req.url);\n    if (req.http.host) {\n        hash_data(req.http.host);\n    } else {\n        hash_data(server.ip);\n    }\n    return (lookup);\n}<\/code><\/pre>\n<p>Bu VCL yap\u0131land\u0131rmas\u0131nda:<br \/>\n*   <code>backend<\/code> bloklar\u0131 Nginx sunucular\u0131m\u0131z\u0131 tan\u0131mlar. <code>.probe<\/code> k\u0131sm\u0131, Varnish&#8217;in bu sunucular\u0131n \u00e7al\u0131\u015f\u0131r durumda olup olmad\u0131\u011f\u0131n\u0131 kontrol etmesini sa\u011flar.<br \/>\n*   <code>vcl_init<\/code> i\u00e7inde <code>directors.round_robin()<\/code> kullanarak basit bir y\u00fck dengeleyici olu\u015fturduk.<br \/>\n*   <code>vcl_recv<\/code> fonksiyonu, gelen HTTP isteklerini i\u015fler. Burada, hangi iste\u011fin \u00f6nbelle\u011fe al\u0131naca\u011f\u0131n\u0131 (<code>hash<\/code>), hangi iste\u011fin do\u011frudan arka uca iletilece\u011fini (<code>pass<\/code>) veya hangi iste\u011fin do\u011frudan boru hatt\u0131na al\u0131naca\u011f\u0131n\u0131 (<code>pipe<\/code>) belirleyen kurallar tan\u0131mlanm\u0131\u015ft\u0131r. \u00d6zellikle cookie i\u00e7eren istekler veya belirli dinamik URL&#8217;ler \u00f6nbelle\u011fe al\u0131nmaz.<br \/>\n*   <code>vcl_backend_response<\/code> fonksiyonu, arka u\u00e7tan gelen yan\u0131tlar\u0131 i\u015fler. Burada, statik dosyalar i\u00e7in varsay\u0131lan bir TTL (Time To Live) ayarlayarak \u00f6nbellek \u00f6mr\u00fcn\u00fc belirledik.<br \/>\n*   <code>vcl_deliver<\/code> fonksiyonu, yan\u0131t istemciye g\u00f6nderilmeden \u00f6nce \u00e7al\u0131\u015f\u0131r. Burada, Varnish&#8217;in kendi ekledi\u011fi baz\u0131 ba\u015fl\u0131klar\u0131 kald\u0131rabiliriz ve \u00f6nbellek durumunu (<code>X-Varnish-Cache<\/code>) ekleyebiliriz.<\/p>\n<p>De\u011fi\u015fiklikleri kaydedin ve Varnish yap\u0131land\u0131rmas\u0131n\u0131 kontrol edin, ard\u0131ndan servisi yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo varnishd -C -f \/etc\/varnish\/default.vcl\nsudo service varnish restart<\/code><\/pre>\n<h3>Ad\u0131m 4: K\u00fcmelenmi\u015f Ortam\u0131n Test Edilmesi<\/h3>\n<p>Art\u0131k Varnish ve Nginx sunucular\u0131m\u0131z yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131na g\u00f6re, sistemin beklendi\u011fi gibi \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 test edebiliriz.<\/p>\n<h4>Web Taray\u0131c\u0131s\u0131 ile Test<\/h4>\n<p>Web taray\u0131c\u0131n\u0131zdan Varnish sunucusunun IP adresine (<code>http:\/\/192.168.1.10<\/code>) gidin.<br \/>\n*   Sayfay\u0131 ilk a\u00e7t\u0131\u011f\u0131n\u0131zda, Nginx Sunucusu 1 veya Nginx Sunucusu 2&#8217;den gelen &#8220;Merhaba&#8230;&#8221; mesaj\u0131n\u0131 g\u00f6rmelisiniz.<br \/>\n*   Taray\u0131c\u0131n\u0131z\u0131n geli\u015ftirici ara\u00e7lar\u0131n\u0131 (F12) a\u00e7arak &#8220;Network&#8221; sekmesine gidin. Yeniden y\u00fckleme yapt\u0131\u011f\u0131n\u0131zda HTTP yan\u0131t ba\u015fl\u0131klar\u0131nda <code>X-Nginx-Server<\/code> ba\u015fl\u0131\u011f\u0131n\u0131 ve <code>X-Varnish-Cache<\/code> ba\u015fl\u0131\u011f\u0131n\u0131 g\u00f6rmelisiniz.<br \/>\n    *   <code>X-Nginx-Server<\/code>: Hangi Nginx sunucusunun yan\u0131t verdi\u011fini g\u00f6sterir (\u00f6rn. <code>nginx-server-1<\/code> veya <code>nginx-server-2<\/code>).<br \/>\n    *   <code>X-Varnish-Cache<\/code>: <code>MISS<\/code> ise Varnish \u00f6nbelle\u011finde bulunmad\u0131 ve arka u\u00e7tan getirildi; <code>HIT<\/code> ise Varnish \u00f6nbelle\u011finden sunuldu.<\/p>\n<p>Sayfay\u0131 birka\u00e7 kez yeniledi\u011finizde, <code>X-Nginx-Server<\/code> ba\u015fl\u0131\u011f\u0131n\u0131n de\u011fi\u015fti\u011fini g\u00f6rmelisiniz (e\u011fer Varnish \u00f6nbelle\u011fe almad\u0131ysa veya \u00f6nbellek s\u00fcresi dolduysa), bu da Varnish&#8217;in y\u00fck dengeleme yapt\u0131\u011f\u0131n\u0131 g\u00f6sterir. E\u011fer sayfa <code>HIT<\/code> olarak geliyorsa, Varnish \u00f6nbellekten sunuyor demektir ve arka u\u00e7 Nginx&#8217;e gitmiyor.<\/p>\n<h4>Komut Sat\u0131r\u0131 ile Test<\/h4>\n<p><code>curl<\/code> komutu ile daha detayl\u0131 test yapabiliriz. Varnish sunucusunun IP&#8217;sini kullanarak istek g\u00f6nderelim:<\/p>\n<pre><code class=\"language-bash\">curl -I http:\/\/192.168.1.10<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da a\u015fa\u011f\u0131daki gibi ba\u015fl\u0131klar g\u00f6rmelisiniz:<\/p>\n<pre><code class=\"language-\">HTTP\/1.1 200 OK\nServer: Nginx\nDate: Mon, 28 Oct 2023 10:00:00 GMT\nContent-Type: text\/html\nContent-Length: 100\nLast-Modified: Mon, 28 Oct 2023 09:55:00 GMT\nETag: \"653cf1c4-64\"\nX-Nginx-Server: nginx-server-1 # Veya nginx-server-2\nX-Varnish: 123456\nAge: 0\nVia: 1.1 varnish (Varnish\/4.0)\nX-Varnish-Cache: MISS\nConnection: keep-alive<\/code><\/pre>\n<p>Ayn\u0131 komutu birka\u00e7 kez \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, <code>X-Nginx-Server<\/code> ba\u015fl\u0131\u011f\u0131n\u0131n de\u011fi\u015fti\u011fini, <code>X-Varnish-Cache<\/code> ba\u015fl\u0131\u011f\u0131n\u0131n <code>HIT<\/code> olabildi\u011fini ve <code>Age<\/code> ba\u015fl\u0131\u011f\u0131n\u0131n artt\u0131\u011f\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<h4>Nginx Sunucusu Ar\u0131zas\u0131n\u0131 Sim\u00fcle Etme<\/h4>\n<p>Y\u00fcksek eri\u015filebilirli\u011fi test etmek i\u00e7in Nginx sunucular\u0131ndan birini durdural\u0131m.<\/p>\n<p><strong>Nginx Sunucusu 1 (<code>192.168.1.11<\/code>) \u00fczerinde:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo service nginx stop<\/code><\/pre>\n<p>\u015eimdi tekrar Varnish IP&#8217;sine istek g\u00f6nderin (<code>http:\/\/192.168.1.10<\/code>). Sayfa hala y\u00fcklenmeli ve t\u00fcm isteklerin art\u0131k \u00e7al\u0131\u015fan Nginx Sunucusu 2&#8217;den geldi\u011fini (<code>X-Nginx-Server: nginx-server-2<\/code>) g\u00f6rmelisiniz. Varnish, sa\u011fl\u0131k kontrol\u00fc sayesinde \u00e7al\u0131\u015fmayan arka ucu otomatik olarak havuzdan \u00e7\u0131karacak ve istekleri sadece \u00e7al\u0131\u015fan sunucuya y\u00f6nlendirecektir.<\/p>\n<p>Nginx Sunucusu 1&#8217;i tekrar ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo service nginx start<\/code><\/pre>\n<p>Bir s\u00fcre sonra (Varnish&#8217;in sa\u011fl\u0131k kontrol\u00fc aral\u0131\u011f\u0131na ba\u011fl\u0131 olarak), Varnish Sunucusu 1&#8217;i tekrar havuza dahil edecektir ve istekler tekrar her iki sunucuya da da\u011f\u0131t\u0131lmaya ba\u015flayacakt\u0131r.<\/p>\n<h3>Performans ve \u00d6l\u00e7eklenebilirlik \u0130\u00e7in Ek \u0130pu\u00e7lar\u0131<\/h3>\n<p>Bu temel kurulumu daha da geli\u015ftirmek i\u00e7in a\u015fa\u011f\u0131daki ipu\u00e7lar\u0131n\u0131 de\u011ferlendirebilirsiniz:<\/p>\n<p>*   <strong>Geli\u015fmi\u015f VCL Kurallar\u0131:<\/strong> <code>default.vcl<\/code> dosyas\u0131n\u0131 uygulaman\u0131z\u0131n \u00f6zel ihtiya\u00e7lar\u0131na g\u00f6re \u00f6zelle\u015ftirin. \u00d6rne\u011fin, belirli URL&#8217;ler i\u00e7in farkl\u0131 \u00f6nbellek s\u00fcreleri ayarlayabilir, \u00e7erezleri temizleyebilir veya belirli istekleri do\u011frudan ge\u00e7ebilirsiniz.<br \/>\n*   <strong>SSL\/TLS Deste\u011fi:<\/strong> Varnish, HTTP trafi\u011fini h\u0131zland\u0131rmak i\u00e7in tasarlanm\u0131\u015ft\u0131r ve do\u011frudan SSL\/TLS sonland\u0131rmay\u0131 desteklemez. SSL\/TLS trafi\u011fini Varnish&#8217;e y\u00f6nlendirmek i\u00e7in Nginx&#8217;i bir SSL sonland\u0131r\u0131c\u0131 olarak Varnish&#8217;in \u00f6n\u00fcne koyman\u0131z veya HAProxy gibi bir ters proxy kullanman\u0131z gerekir.<br \/>\n*   <strong>Varnish Depolama Alan\u0131:<\/strong> <code>VARNISH_STORAGE<\/code> ayar\u0131n\u0131 (<code>\/etc\/default\/varnish<\/code> dosyas\u0131nda) uygulaman\u0131z\u0131n \u00f6nbellek ihtiyac\u0131na g\u00f6re ayarlay\u0131n. Daha fazla bellek (malloc) veya disk (file) tabanl\u0131 depolama kullanabilirsiniz.<br \/>\n*   <strong>Nginx Optimizasyonu:<\/strong> Nginx sunucular\u0131n\u0131z\u0131 performans i\u00e7in ayarlay\u0131n. <code>worker_processes<\/code>, <code>worker_connections<\/code>, <code>keepalive_timeout<\/code> gibi parametreleri uygulaman\u0131z\u0131n trafi\u011fine g\u00f6re optimize edin.<br \/>\n*   <strong>\u0130zleme ve G\u00fcnl\u00fckleme:<\/strong> <code>varnishlog<\/code>, <code>varnishstat<\/code> gibi ara\u00e7larla Varnish&#8217;in performans\u0131n\u0131 izleyin. Nginx eri\u015fim g\u00fcnl\u00fcklerini (<code>access.log<\/code>) ve hata g\u00fcnl\u00fcklerini (<code>error.log<\/code>) d\u00fczenli olarak kontrol edin. Merkezi bir g\u00fcnl\u00fckleme sistemi (\u00f6rn. ELK Stack) kullanmak, k\u00fcmelenmi\u015f ortamda sorun gidermeyi kolayla\u015ft\u0131r\u0131r.<br \/>\n*   <strong>G\u00fcvenlik Duvar\u0131 (Firewall):<\/strong> Varnish sunucusunun sadece 80 (veya 443 e\u011fer SSL sonland\u0131r\u0131c\u0131 varsa) portundan gelen d\u0131\u015f trafi\u011fe izin verdi\u011finden emin olun. Nginx sunucular\u0131n\u0131n ise sadece Varnish sunucusundan gelen trafi\u011fe (8080 portu \u00fczerinden) izin vermesi \u00f6nemlidir. UFW (Uncomplicated Firewall) veya iptables kullanabilirsiniz.<br \/>\n*   <strong>\u00d6l\u00e7eklendirme:<\/strong> Trafik artt\u0131\u011f\u0131nda, yeni Nginx sunucular\u0131 ekleyerek ve bunlar\u0131 Varnish&#8217;in <code>default.vcl<\/code> dosyas\u0131na ekleyerek kolayca \u00f6l\u00e7eklendirme yapabilirsiniz.<br \/>\n*   <strong>Dinamik \u0130\u00e7erik ve Oturumlar:<\/strong> Dinamik i\u00e7erik veya kullan\u0131c\u0131 oturumlar\u0131 i\u00e7in \u00f6nbelle\u011fe alma genellikle uygun de\u011fildir. Bu t\u00fcr isteklerin <code>return (pass)<\/code> ile Varnish&#8217;i atlamas\u0131n\u0131 sa\u011flay\u0131n. Oturum y\u00f6netimi i\u00e7in yap\u0131\u015fkan oturumlar (sticky sessions) veya merkezi bir oturum depolama mekanizmas\u0131 (Redis, Memcached) d\u00fc\u015f\u00fcnebilirsiniz.<\/p>\n<h3>Sorun Giderme ve Yayg\u0131n Hatalar<\/h3>\n<p>Kurulum s\u0131ras\u0131nda veya sonras\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcmleri:<\/p>\n<p>*   <strong>Varnish Ba\u015flam\u0131yor:<\/strong><br \/>\n    *   <code>sudo service varnish status<\/code> komutuyla hatay\u0131 kontrol edin.<br \/>\n    *   <code>\/etc\/default\/varnish<\/code> ve <code>\/etc\/varnish\/default.vcl<\/code> dosyalar\u0131ndaki s\u00f6zdizimi hatalar\u0131n\u0131 kontrol edin. <code>sudo varnishd -C -f \/etc\/varnish\/default.vcl<\/code> ile VCL dosyas\u0131n\u0131 test edin.<br \/>\n    *   Port \u00e7ak\u0131\u015fmas\u0131: Ba\u015fka bir servisin 80 portunu kullan\u0131p kullanmad\u0131\u011f\u0131n\u0131 kontrol edin (<code>sudo netstat -tulpn | grep :80<\/code>).<br \/>\n*   <strong>Nginx Ula\u015f\u0131lam\u0131yor (Varnish Arkas\u0131ndan):<\/strong><br \/>\n    *   Nginx sunucular\u0131n\u0131n 8080 portunda dinledi\u011finden emin olun.<br \/>\n    *   Nginx sunucular\u0131n\u0131n g\u00fcvenlik duvar\u0131 kurallar\u0131n\u0131n Varnish sunucusundan gelen trafi\u011fe izin verdi\u011finden emin olun.<br \/>\n    *   Varnish <code>default.vcl<\/code> dosyas\u0131ndaki arka u\u00e7 IP adreslerinin ve portlar\u0131n\u0131n do\u011fru oldu\u011fundan emin olun.<br \/>\n*   <strong>Varnish Y\u00fck Dengeleme Yapm\u0131yor \/ Hep Ayn\u0131 Sunucuya Y\u00f6nlendiriyor:<\/strong><br \/>\n    *   Taray\u0131c\u0131n\u0131z\u0131n \u00f6nbelle\u011fini temizleyin veya gizli sekmede deneyin.<br \/>\n    *   <code>X-Varnish-Cache<\/code> ba\u015fl\u0131\u011f\u0131n\u0131n <code>MISS<\/code> oldu\u011funu do\u011frulay\u0131n. E\u011fer <code>HIT<\/code> ise Varnish \u00f6nbellekten sunuyor ve arka uca gitmiyor demektir.<br \/>\n    *   Varnish <code>default.vcl<\/code> dosyas\u0131ndaki <code>vcl_recv<\/code> kurallar\u0131n\u0131 kontrol edin, \u00f6zellikle cookie ve <code>return (pass)<\/code> ifadelerini.<br \/>\n*   <strong>Performans Beklentileri Kar\u015f\u0131lanm\u0131yor:<\/strong><br \/>\n    *   <code>varnishstat<\/code> ile Varnish istatistiklerini kontrol edin (\u00f6nbellek isabet oran\u0131, bayt ak\u0131\u015f\u0131 vb.).<br \/>\n    *   Nginx sunucular\u0131n\u0131n CPU, bellek ve disk kullan\u0131m\u0131n\u0131 izleyin.<br \/>\n    *   Varnish depolama boyutunu art\u0131rmay\u0131 d\u00fc\u015f\u00fcn\u00fcn.<br \/>\n    *   VCL kurallar\u0131n\u0131z\u0131 daha agresif \u00f6nbellekleme i\u00e7in optimize edin.<br \/>\n*   <strong>Ubuntu 13.10 Eski S\u00fcr\u00fcm Sorunlar\u0131:<\/strong> Ubuntu 13.10&#8217;un resmi deste\u011fi sona erdi\u011fi i\u00e7in paket depolar\u0131 veya belirli paket s\u00fcr\u00fcmleriyle ilgili sorunlar ya\u015fanabilir. Bu makaledeki ad\u0131mlar genel olarak \u00e7al\u0131\u015fsa da, \u00fcretim ortamlar\u0131 i\u00e7in g\u00fcncel ve desteklenen bir Ubuntu s\u00fcr\u00fcm\u00fc kullanman\u0131z \u015fiddetle tavsiye edilir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu makalede, Ubuntu 13.10 \u00fczerinde Varnish Cache ve Nginx kullanarak nas\u0131l y\u00fcksek performansl\u0131, \u00f6l\u00e7eklenebilir ve y\u00fcksek eri\u015filebilirli\u011fe sahip k\u00fcmelenmi\u015f bir web sunucusu ortam\u0131 olu\u015fturulaca\u011f\u0131n\u0131 ad\u0131m ad\u0131m \u00f6\u011frendik. Nginx&#8217;in web sunucusu olarak g\u00fcc\u00fc ile Varnish&#8217;in \u00f6nbellekleme ve y\u00fck dengeleme yeteneklerini birle\u015ftirerek, yo\u011fun trafikli web uygulamalar\u0131 i\u00e7in sa\u011flam bir altyap\u0131 kurmu\u015f olduk.<\/p>\n<p>Varnish&#8217;in VCL dili sayesinde, \u00f6nbellekleme davran\u0131\u015f\u0131n\u0131 uygulaman\u0131z\u0131n \u00f6zel gereksinimlerine g\u00f6re ince ayar yapabilir, Nginx sunucular\u0131n\u0131 kolayca \u00f6l\u00e7eklendirebilir ve kullan\u0131c\u0131lar\u0131n\u0131za kesintisiz bir deneyim sunabilirsiniz. Unutmay\u0131n ki bu kurulum temel bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r ve ger\u00e7ek d\u00fcnya \u00fcretim ortamlar\u0131 i\u00e7in g\u00fcvenlik, izleme, otomatik \u00f6l\u00e7eklendirme ve daha geli\u015fmi\u015f y\u00fck dengeleme stratejileri gibi ek katmanlar\u0131n eklenmesi gerekebilir. Ancak bu makaledeki bilgiler, modern web altyap\u0131lar\u0131n\u0131n temel ta\u015flar\u0131n\u0131 anlaman\u0131z ve uygulaman\u0131z i\u00e7in g\u00fc\u00e7l\u00fc bir temel olu\u015fturacakt\u0131r.<\/p>\n","protected":false},"excerpt":{"rendered":"Ubuntu 13.10 \u00dczerinde Varnish ve Nginx ile K\u00fcmelenmi\u015f Web Sunucusu Yap\u0131land\u0131rmas\u0131\nGiri\u015f\nG\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda, web uygulamalar\u0131","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-32016","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ubuntu 13.10 \u00dczerinde Varnish ve Nginx ile K\u00fcmelenmi\u015f Web Sunucusu Yap\u0131land\u0131rmas\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ubuntu 13.10 \u00dczerinde Varnish ve Nginx ile K\u00fcmelenmi\u015f Web Sunucusu Yap\u0131land\u0131rmas\u0131\" \/>\n<meta property=\"og:description\" content=\"Ubuntu 13.10 \u00dczerinde Varnish ve Nginx ile K\u00fcmelenmi\u015f Web Sunucusu Yap\u0131land\u0131rmas\u0131 Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda, web uygulamalar\u0131\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-16T16:41:15+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Ubuntu 13.10 \u00dczerinde Varnish ve Nginx ile K\u00fcmelenmi\u015f Web Sunucusu Yap\u0131land\u0131rmas\u0131\",\"datePublished\":\"2025-10-16T16:41:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/\"},\"wordCount\":2554,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/\",\"name\":\"Ubuntu 13.10 \u00dczerinde Varnish ve Nginx ile K\u00fcmelenmi\u015f Web Sunucusu Yap\u0131land\u0131rmas\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-16T16:41:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ubuntu 13.10 \u00dczerinde Varnish ve Nginx ile K\u00fcmelenmi\u015f Web Sunucusu Yap\u0131land\u0131rmas\u0131\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ubuntu 13.10 \u00dczerinde Varnish ve Nginx ile K\u00fcmelenmi\u015f Web Sunucusu Yap\u0131land\u0131rmas\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/","og_locale":"tr_TR","og_type":"article","og_title":"Ubuntu 13.10 \u00dczerinde Varnish ve Nginx ile K\u00fcmelenmi\u015f Web Sunucusu Yap\u0131land\u0131rmas\u0131","og_description":"Ubuntu 13.10 \u00dczerinde Varnish ve Nginx ile K\u00fcmelenmi\u015f Web Sunucusu Yap\u0131land\u0131rmas\u0131 Giri\u015f G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda, web uygulamalar\u0131","og_url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-16T16:41:15+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"17 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Ubuntu 13.10 \u00dczerinde Varnish ve Nginx ile K\u00fcmelenmi\u015f Web Sunucusu Yap\u0131land\u0131rmas\u0131","datePublished":"2025-10-16T16:41:15+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/"},"wordCount":2554,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/","url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/","name":"Ubuntu 13.10 \u00dczerinde Varnish ve Nginx ile K\u00fcmelenmi\u015f Web Sunucusu Yap\u0131land\u0131rmas\u0131 - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-16T16:41:15+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-13-10-uzerinde-varnish-ve-nginx-ile-kumelenmis-web-sunucusu-yapilandirmasi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ubuntu 13.10 \u00dczerinde Varnish ve Nginx ile K\u00fcmelenmi\u015f Web Sunucusu Yap\u0131land\u0131rmas\u0131"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32016","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=32016"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32016\/revisions"}],"predecessor-version":[{"id":32017,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/32016\/revisions\/32017"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=32016"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=32016"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=32016"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}