{"id":41625,"date":"2026-05-07T08:00:48","date_gmt":"2026-05-07T05:00:48","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=41625"},"modified":"2026-05-07T08:00:48","modified_gmt":"2026-05-07T05:00:48","slug":"nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/","title":{"rendered":"Nginx HTTP Proxying, Y\u00fck Dengeleme, Ara Belle\u011fe Alma ve \u00d6nbelle\u011fe Alma Mekanizmalar\u0131n\u0131 Anlamak"},"content":{"rendered":"<p><body><\/p>\n<h2>Nginx HTTP Proxying, Y\u00fck Dengeleme, Ara Belle\u011fe Alma ve \u00d6nbelle\u011fe Alma Mekanizmalar\u0131n\u0131 Anlamak<\/h2>\n<h2>Giri\u015f<\/h2>\n<p>Modern web uygulamalar\u0131, artan trafik, y\u00fcksek eri\u015filebilirlik gereksinimleri ve performans beklentileri nedeniyle karma\u015f\u0131k bir altyap\u0131ya ihtiya\u00e7 duyar. Bu altyap\u0131n\u0131n temel ta\u015flar\u0131ndan biri de ters proxy sunucular\u0131d\u0131r. Nginx, y\u00fcksek performansl\u0131, kararl\u0131 ve esnek bir ters proxy sunucusu olarak bu ihtiya\u00e7lara m\u00fckemmel bir \u00e7\u00f6z\u00fcm sunar. HTTP proxying, y\u00fck dengeleme, ara belle\u011fe alma (buffering) ve \u00f6nbelle\u011fe alma (caching) gibi yetenekleri sayesinde Nginx, web uygulamalar\u0131n\u0131n \u00f6l\u00e7eklenebilirli\u011fini, g\u00fcvenli\u011fini ve yan\u0131t s\u00fcrelerini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r. Bu makalede, Nginx&#8217;in bu d\u00f6rt kritik mekanizmas\u0131n\u0131 derinlemesine inceleyece\u011fiz, her birinin nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, neden \u00f6nemli oldu\u011funu ve tipik yap\u0131land\u0131rma \u00f6rneklerini ele alaca\u011f\u0131z. Amac\u0131m\u0131z, Nginx&#8217;in bu \u00f6zelliklerini kullanarak web altyap\u0131n\u0131z\u0131 nas\u0131l optimize edebilece\u011finizi kapsaml\u0131 bir \u015fekilde a\u00e7\u0131klamakt\u0131r.<\/p>\n<h2>Nginx HTTP Proxying<\/h2>\n<p>Nginx&#8217;in en temel ve yayg\u0131n kullan\u0131m alanlar\u0131ndan biri ters proxy sunucusu olarak i\u015flev g\u00f6rmesidir. Ters proxy, istemciden gelen istekleri al\u0131r ve bu istekleri bir veya daha fazla arka u\u00e7 sunucusuna (origin server) iletir. Arka u\u00e7 sunucusu yan\u0131t verdi\u011finde, ters proxy bu yan\u0131t\u0131 tekrar istemciye iletir. Bu mekanizma, web uygulamalar\u0131n\u0131n mimarisinde bir\u00e7ok avantaj sa\u011flar.<\/p>\n<h3>Temeller<\/h3>\n<p>Bir ters proxy kullanman\u0131n ba\u015fl\u0131ca faydalar\u0131 \u015funlard\u0131r:<br \/>\n*   <strong>G\u00fcvenlik:<\/strong> Arka u\u00e7 sunucular\u0131n\u0131n do\u011frudan internete maruz kalmas\u0131n\u0131 engelleyerek g\u00fcvenlik katman\u0131 ekler. Nginx, k\u00f6t\u00fc niyetli istekleri filtreleyebilir veya DDoS sald\u0131r\u0131lar\u0131na kar\u015f\u0131 bir ilk savunma hatt\u0131 olabilir.<br \/>\n*   <strong>Y\u00fck Dengeleme:<\/strong> Gelen trafi\u011fi birden fazla arka u\u00e7 sunucusu aras\u0131nda da\u011f\u0131tarak sistemin \u00f6l\u00e7eklenebilirli\u011fini ve hata tolerans\u0131n\u0131 art\u0131r\u0131r.<br \/>\n*   <strong>SSL Sonland\u0131rma:<\/strong> SSL\/TLS \u015fifrelemesini Nginx \u00fczerinde sonland\u0131rarak arka u\u00e7 sunucular\u0131n\u0131n bu y\u00fckten kurtulmas\u0131n\u0131 sa\u011flar. Bu, arka u\u00e7 sunucular\u0131n\u0131n daha \u00e7ok uygulama mant\u0131\u011f\u0131na odaklanmas\u0131na olanak tan\u0131r.<br \/>\n*   <strong>\u00d6nbellekleme:<\/strong> S\u0131k eri\u015filen i\u00e7eri\u011fi \u00f6nbelle\u011fe alarak arka u\u00e7 sunucular\u0131n\u0131n y\u00fck\u00fcn\u00fc azalt\u0131r ve yan\u0131t s\u00fcrelerini iyile\u015ftirir.<br \/>\n*   <strong>URL Yeniden Yazma ve Y\u00f6nlendirme:<\/strong> Gelen isteklerin URL&#8217;lerini yeniden yazabilir veya belirli ko\u015fullara g\u00f6re farkl\u0131 arka u\u00e7lara y\u00f6nlendirebilir.<\/p>\n<p>Nginx&#8217;te bir ters proxy yap\u0131land\u0131rmak i\u00e7in <code>proxy_pass<\/code> direktifi kullan\u0131l\u0131r. Bu direktif, bir <code>location<\/code> blo\u011fu i\u00e7inde tan\u0131mlan\u0131r ve gelen isteklerin hangi arka u\u00e7 sunucusuna iletilece\u011fini belirtir.<\/p>\n<pre><code class=\"language-nginx\">server {\n    listen 80;\n    server_name example.com;\n\n    location \/app\/ {\n        proxy_pass http:\/\/backend_servers; # backend_servers bir upstream blo\u011fu veya do\u011frudan IP olabilir\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}<\/code><\/pre>\n<p>Bu \u00f6rnekte, <code>example.com\/app\/<\/code> ile ba\u015flayan t\u00fcm istekler <code>http:\/\/backend_servers<\/code> adresine iletilir.<\/p>\n<h3>Geli\u015fmi\u015f Proxy Ayarlar\u0131<\/h3>\n<p>Nginx, proxy isteklerinin davran\u0131\u015f\u0131n\u0131 kontrol etmek i\u00e7in bir dizi geli\u015fmi\u015f direktif sunar:<\/p>\n<p>*   <strong><code>proxy_set_header<\/code>:<\/strong> Bu direktif, Nginx&#8217;in arka u\u00e7 sunucusuna iletti\u011fi istek ba\u015fl\u0131klar\u0131n\u0131 \u00f6zelle\u015ftirmek i\u00e7in kullan\u0131l\u0131r. Yukar\u0131daki \u00f6rnekte g\u00f6r\u00fcld\u00fc\u011f\u00fc gibi, <code>Host<\/code>, <code>X-Real-IP<\/code>, <code>X-Forwarded-For<\/code> ve <code>X-Forwarded-Proto<\/code> gibi ba\u015fl\u0131klar genellikle ayarlan\u0131r.<br \/>\n    *   <code>Host $host;<\/code>: \u0130stemcinin orijinal <code>Host<\/code> ba\u015fl\u0131\u011f\u0131n\u0131 arka uca iletir. Bu, arka u\u00e7 sunucusunun sanal ana bilgisayarlar\u0131 do\u011fru bir \u015fekilde i\u015flemesi i\u00e7in kritik \u00f6neme sahiptir.<br \/>\n    *   <code>X-Real-IP $remote_addr;<\/code>: \u0130stemcinin ger\u00e7ek IP adresini arka uca iletir.<br \/>\n    *   <code>X-Forwarded-For $proxy_add_x_forwarded_for;<\/code>: \u0130stemcinin IP adresini ve proxy sunucusunun IP adresini i\u00e7eren bir liste iletir. Birden fazla proxy zinciri varsa, her proxy kendi IP adresini bu listeye ekler.<br \/>\n    *   <code>X-Forwarded-Proto $scheme;<\/code>: \u0130stemcinin Nginx&#8217;e ba\u011flanmak i\u00e7in kulland\u0131\u011f\u0131 protokol\u00fc (HTTP veya HTTPS) arka uca iletir.<\/p>\n<p>*   <strong><code>proxy_redirect<\/code>:<\/strong> Bu direktif, arka u\u00e7 sunucusundan gelen yan\u0131tlardaki <code>Location<\/code> veya <code>Refresh<\/code> ba\u015fl\u0131klar\u0131n\u0131 yeniden yazmak i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin, arka u\u00e7 <code>\/login<\/code> adresine y\u00f6nlendirme yap\u0131yorsa, Nginx bunu <code>\/app\/login<\/code> olarak de\u011fi\u015ftirebilir.<\/p>\n<pre><code class=\"language-nginx\">proxy_redirect default; # veya proxy_redirect http:\/\/backend\/ https:\/\/example.com\/app\/;<\/code><\/pre>\n<p>*   <strong><code>proxy_connect_timeout<\/code>, <code>proxy_send_timeout<\/code>, <code>proxy_read_timeout<\/code>:<\/strong> Bu \u00fc\u00e7 direktif, Nginx ile arka u\u00e7 sunucusu aras\u0131ndaki ba\u011flant\u0131 ve veri aktar\u0131m s\u00fcrelerini kontrol eder.<br \/>\n    *   <code>proxy_connect_timeout<\/code>: Nginx&#8217;in arka u\u00e7 sunucusuyla ba\u011flant\u0131 kurmak i\u00e7in bekleyece\u011fi maksimum s\u00fcreyi (saniye cinsinden) ayarlar.<br \/>\n    *   <code>proxy_send_timeout<\/code>: Nginx&#8217;in arka u\u00e7 sunucusuna bir istek g\u00f6nderirken, iki yazma i\u015flemi aras\u0131nda bekleyece\u011fi maksimum s\u00fcreyi ayarlar.<br \/>\n    *   <code>proxy_read_timeout<\/code>: Nginx&#8217;in arka u\u00e7 sunucusundan bir yan\u0131t okurken, iki okuma i\u015flemi aras\u0131nda bekleyece\u011fi maksimum s\u00fcreyi ayarlar.<br \/>\n    Bu zaman a\u015f\u0131m\u0131 ayarlar\u0131, yava\u015f veya yan\u0131t vermeyen arka u\u00e7 sunucular\u0131ndan kaynaklanan sorunlar\u0131 \u00f6nlemek i\u00e7in \u00f6nemlidir.<\/p>\n<p>*   <strong><code>proxy_next_upstream<\/code>:<\/strong> Bir arka u\u00e7 sunucusu hata verdi\u011finde (\u00f6rne\u011fin, zaman a\u015f\u0131m\u0131, ba\u011flant\u0131 hatas\u0131, 5xx durum kodu), Nginx&#8217;in iste\u011fi ba\u015fka bir arka u\u00e7 sunucusuna iletip iletmeyece\u011fini ve hangi ko\u015fullarda iletece\u011fini belirler.<\/p>\n<pre><code class=\"language-nginx\">proxy_next_upstream error timeout http_500 http_502 http_503 http_504;<\/code><\/pre>\n<p>    Bu, y\u00fck dengeleme ile birlikte kullan\u0131ld\u0131\u011f\u0131nda sistemin hata tolerans\u0131n\u0131 art\u0131r\u0131r.<\/p>\n<p>Nginx&#8217;in proxy yetenekleri, modern web mimarilerinin temelini olu\u015fturur. \u0130stemci ile arka u\u00e7 sunucular\u0131 aras\u0131nda bir arac\u0131 g\u00f6revi g\u00f6rerek performans\u0131, g\u00fcvenli\u011fi ve esnekli\u011fi art\u0131r\u0131r.<\/p>\n<h2>Y\u00fck Dengeleme (Load Balancing)<\/h2>\n<p>Y\u00fck dengeleme, gelen a\u011f trafi\u011fini bir grup arka u\u00e7 sunucusu aras\u0131nda da\u011f\u0131tarak tek bir sunucunun a\u015f\u0131r\u0131 y\u00fcklenmesini \u00f6nleyen bir tekniktir. Bu, uygulamalar\u0131n \u00f6l\u00e7eklenebilirli\u011fini, eri\u015filebilirli\u011fini ve hata tolerans\u0131n\u0131 art\u0131r\u0131r. Nginx, g\u00fc\u00e7l\u00fc bir yaz\u0131l\u0131m tabanl\u0131 y\u00fck dengeleyici olarak bu alanda \u00e7ok yayg\u0131n olarak kullan\u0131l\u0131r.<\/p>\n<h3>Neden Y\u00fck Dengeleme?<\/h3>\n<p>*   <strong>\u00d6l\u00e7eklenebilirlik:<\/strong> Uygulaman\u0131n trafik talebi artt\u0131\u011f\u0131nda, daha fazla arka u\u00e7 sunucusu ekleyerek yatay \u00f6l\u00e7eklendirme sa\u011flar.<br \/>\n*   <strong>Y\u00fcksek Eri\u015filebilirlik:<\/strong> Bir arka u\u00e7 sunucusu ar\u0131zaland\u0131\u011f\u0131nda, trafik otomatik olarak \u00e7al\u0131\u015fan di\u011fer sunuculara y\u00f6nlendirilir, b\u00f6ylece hizmet kesintisi en aza indirilir.<br \/>\n*   <strong>Performans \u0130yile\u015ftirme:<\/strong> \u0130\u015f y\u00fck\u00fcn\u00fc birden fazla sunucuya da\u011f\u0131tarak her bir sunucunun \u00fczerindeki y\u00fck\u00fc azalt\u0131r ve yan\u0131t s\u00fcrelerini iyile\u015ftirir.<br \/>\n*   <strong>Hata Tolerans\u0131:<\/strong> Bir sunucunun \u00e7\u00f6kmesi durumunda bile uygulaman\u0131n \u00e7al\u0131\u015fmaya devam etmesini sa\u011flar.<\/p>\n<h3>Upstream Bloklar\u0131<\/h3>\n<p>Nginx&#8217;te y\u00fck dengeleme, <code>upstream<\/code> blo\u011fu kullan\u0131larak yap\u0131land\u0131r\u0131l\u0131r. Bu blok, bir grup arka u\u00e7 sunucusunu tan\u0131mlar ve Nginx&#8217;in bu sunuculara istekleri nas\u0131l da\u011f\u0131taca\u011f\u0131n\u0131 belirtir.<\/p>\n<pre><code class=\"language-nginx\">upstream backend_servers {\n    server backend1.example.com:8080;\n    server backend2.example.com:8080;\n    server backend3.example.com:8080;\n}\n\nserver {\n    listen 80;\n    server_name example.com;\n\n    location \/ {\n        proxy_pass http:\/\/backend_servers;\n        # Di\u011fer proxy ayarlar\u0131...\n    }\n}<\/code><\/pre>\n<p>Burada <code>backend_servers<\/code> ad\u0131nda bir <code>upstream<\/code> grubu tan\u0131mlanm\u0131\u015ft\u0131r. <code>location \/<\/code> blo\u011fundaki <code>proxy_pass http:\/\/backend_servers;<\/code> direktifi, gelen t\u00fcm isteklerin bu <code>upstream<\/code> grubundaki sunuculara iletilece\u011fini belirtir.<\/p>\n<h3>Y\u00fck Dengeleme Y\u00f6ntemleri<\/h3>\n<p>Nginx, \u00e7e\u015fitli y\u00fck dengeleme algoritmalar\u0131n\u0131 destekler:<\/p>\n<p>1.  <strong>Round Robin (Varsay\u0131lan):<\/strong> \u0130stekleri s\u0131rayla <code>upstream<\/code> grubundaki sunuculara da\u011f\u0131t\u0131r. Her sunucuya bir sonraki istek g\u00f6nderilir. Bu, varsay\u0131lan y\u00f6ntemdir ve herhangi bir \u00f6zel direktif belirtilmedi\u011finde kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-nginx\">upstream backend_servers {\n        server backend1.example.com:8080;\n        server backend2.example.com:8080;\n    }<\/code><\/pre>\n<p>2.  <strong>Weighted Round Robin (A\u011f\u0131rl\u0131kl\u0131 Round Robin):<\/strong> Sunuculara farkl\u0131 a\u011f\u0131rl\u0131klar atanabilir. A\u011f\u0131rl\u0131\u011f\u0131 daha y\u00fcksek olan sunuculara daha fazla istek g\u00f6nderilir. Bu, farkl\u0131 kapasitelere sahip sunucular\u0131n\u0131z oldu\u011funda kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-nginx\">upstream backend_servers {\n        server backend1.example.com:8080 weight=3;\n        server backend2.example.com:8080 weight=1;\n    }<\/code><\/pre>\n<p>    Bu \u00f6rnekte, <code>backend1<\/code>&#8216;e <code>backend2<\/code>&#8216;den \u00fc\u00e7 kat daha fazla istek g\u00f6nderilir.<\/p>\n<p>3.  <strong>Least Connected (En Az Ba\u011flant\u0131l\u0131):<\/strong> \u0130stekleri o anda en az aktif ba\u011flant\u0131ya sahip olan sunucuya g\u00f6nderir. Bu, sunucular\u0131n i\u015f y\u00fck\u00fcn\u00fc daha dengeli bir \u015fekilde da\u011f\u0131tmak i\u00e7in etkilidir, \u00e7\u00fcnk\u00fc sadece istek say\u0131s\u0131 de\u011fil, ayn\u0131 zamanda o iste\u011fin i\u015flenme s\u00fcresi de dikkate al\u0131n\u0131r.<\/p>\n<pre><code class=\"language-nginx\">upstream backend_servers {\n        least_conn;\n        server backend1.example.com:8080;\n        server backend2.example.com:8080;\n    }<\/code><\/pre>\n<p>4.  <strong>IP Hash (IP Karmas\u0131):<\/strong> \u0130stemcinin IP adresine g\u00f6re bir karma de\u011fer hesaplar ve ayn\u0131 IP adresinden gelen t\u00fcm istekleri her zaman ayn\u0131 sunucuya g\u00f6nderir. Bu, oturum kal\u0131c\u0131l\u0131\u011f\u0131 (session persistence) sa\u011flamak i\u00e7in kullan\u0131\u015fl\u0131d\u0131r, ancak sunucu grubuna yeni sunucular eklendi\u011finde veya \u00e7\u0131kar\u0131ld\u0131\u011f\u0131nda dengeyi bozabilir.<\/p>\n<pre><code class=\"language-nginx\">upstream backend_servers {\n        ip_hash;\n        server backend1.example.com:8080;\n        server backend2.example.com:8080;\n    }<\/code><\/pre>\n<p>5.  <strong>Generic Hash (Genel Karma):<\/strong> \u0130stemci IP adresi yerine, kullan\u0131c\u0131 tan\u0131ml\u0131 bir anahtar (\u00f6rne\u011fin, URL parametresi, \u00e7erez de\u011feri) \u00fczerinde karma de\u011fer hesaplar. Bu, daha esnek oturum kal\u0131c\u0131l\u0131\u011f\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-nginx\">upstream backend_servers {\n        hash $request_uri consistent; # request_uri'ye g\u00f6re karma\n        server backend1.example.com:8080;\n        server backend2.example.com:8080;\n    }<\/code><\/pre>\n<p>6.  <strong>Random (Rastgele):<\/strong> \u0130stekleri rastgele bir \u015fekilde sunuculara da\u011f\u0131t\u0131r. \u0130ste\u011fe ba\u011fl\u0131 olarak, <code>least_time<\/code> parametresi ile en d\u00fc\u015f\u00fck ortalama yan\u0131t s\u00fcresine sahip sunucuya \u00f6ncelik verilebilir.<\/p>\n<pre><code class=\"language-nginx\">upstream backend_servers {\n        random;\n        server backend1.example.com:8080;\n        server backend2.example.com:8080;\n    }<\/code><\/pre>\n<h3>Sa\u011fl\u0131k Kontrolleri ve Hata Tolerans\u0131<\/h3>\n<p>Nginx, arka u\u00e7 sunucular\u0131n\u0131n durumunu izleyebilir ve ba\u015far\u0131s\u0131z olan sunucular\u0131 otomatik olarak havuzdan \u00e7\u0131karabilir. Bu, sistemin hata tolerans\u0131n\u0131 art\u0131r\u0131r.<\/p>\n<p>*   <strong><code>max_fails<\/code>:<\/strong> Bir sunucunun belirli bir s\u00fcre i\u00e7inde ka\u00e7 kez ba\u015far\u0131s\u0131z olabilece\u011fini belirtir. Varsay\u0131lan olarak 1&#8217;dir.<br \/>\n*   <strong><code>fail_timeout<\/code>:<\/strong> <code>max_fails<\/code> say\u0131s\u0131na ula\u015f\u0131ld\u0131ktan sonra sunucunun ne kadar s\u00fcreyle &#8220;\u00e7al\u0131\u015fm\u0131yor&#8221; olarak i\u015faretlenece\u011fini belirtir. Bu s\u00fcre sonunda Nginx, sunucuyu tekrar test etmek i\u00e7in bir istek g\u00f6nderecektir. Varsay\u0131lan olarak 10 saniyedir.<br \/>\n*   <strong><code>down<\/code>:<\/strong> Bir sunucunun kal\u0131c\u0131 olarak devre d\u0131\u015f\u0131 oldu\u011funu belirtir. Bu sunucuya hi\u00e7bir istek g\u00f6nderilmez. Bak\u0131m i\u015flemleri i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<br \/>\n*   <strong><code>backup<\/code>:<\/strong> Di\u011fer t\u00fcm sunucular me\u015fgul oldu\u011funda veya ba\u015far\u0131s\u0131z oldu\u011funda kullan\u0131lacak yedek sunucuyu belirtir.<\/p>\n<pre><code class=\"language-nginx\">upstream backend_servers {\n        server backend1.example.com:8080 max_fails=3 fail_timeout=30s;\n        server backend2.example.com:8080;\n        server backend3.example.com:8080 backup; # Yedek sunucu\n        server backend4.example.com:8080 down;   # Devre d\u0131\u015f\u0131\n    }<\/code><\/pre>\n<p>Nginx&#8217;in y\u00fck dengeleme \u00f6zellikleri, y\u00fcksek trafikli web uygulamalar\u0131 i\u00e7in kritik \u00f6neme sahiptir. Do\u011fru yap\u0131land\u0131rma ile hem performans\u0131 hem de g\u00fcvenilirli\u011fi \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir.<\/p>\n<h2>Ara Belle\u011fe Alma (Buffering)<\/h2>\n<p>Nginx&#8217;in bir proxy sunucusu olarak \u00e7al\u0131\u015f\u0131rken \u00f6nemli bir yetene\u011fi de ara belle\u011fe alma (buffering) mekanizmas\u0131d\u0131r. Bu, Nginx&#8217;in arka u\u00e7 sunucusundan gelen yan\u0131t\u0131 tamamen veya k\u0131smen kendi belle\u011fine veya diskine kaydetmesi ve ard\u0131ndan bu yan\u0131t\u0131 istemciye g\u00f6ndermesi anlam\u0131na gelir. Ara belle\u011fe alma, Nginx&#8217;in istemci ile arka u\u00e7 sunucusu aras\u0131ndaki veri ak\u0131\u015f\u0131n\u0131 y\u00f6netmesine ve performans\u0131 optimize etmesine olanak tan\u0131r.<\/p>\n<h3>Ara Belle\u011fe Alman\u0131n \u00d6nemi<\/h3>\n<p>*   <strong>H\u0131z Farkl\u0131l\u0131klar\u0131n\u0131 Y\u00f6netme:<\/strong> \u0130stemci ba\u011flant\u0131 h\u0131z\u0131 ile arka u\u00e7 sunucusunun yan\u0131t h\u0131z\u0131 aras\u0131nda farkl\u0131l\u0131klar olabilir. Nginx, yan\u0131t\u0131 h\u0131zl\u0131 bir \u015fekilde arka u\u00e7tan al\u0131p kendi belle\u011finde tutabilir ve istemciye kendi h\u0131z\u0131nda g\u00f6nderebilir. Bu, arka u\u00e7 sunucusunun kaynaklar\u0131n\u0131 daha h\u0131zl\u0131 serbest b\u0131rak\u0131r.<br \/>\n*   <strong>Kaynak Optimizasyonu:<\/strong> Arka u\u00e7 sunucusu, bir yan\u0131t\u0131 tek seferde Nginx&#8217;e g\u00f6nderip ba\u011flant\u0131y\u0131 kapatabilir. Bu, arka u\u00e7 sunucusunun uzun s\u00fcreli istemci ba\u011flant\u0131lar\u0131n\u0131 y\u00f6netme y\u00fck\u00fcnden kurtulmas\u0131n\u0131 sa\u011flar ve kaynaklar\u0131n\u0131 (CPU, bellek) di\u011fer isteklere ay\u0131rmas\u0131na olanak tan\u0131r.<br \/>\n*   <strong>Hata Tolerans\u0131:<\/strong> Tam yan\u0131t\u0131 ara belle\u011fe ald\u0131ktan sonra, Nginx yan\u0131t\u0131 istemciye g\u00f6ndermeye ba\u015flar. E\u011fer bu s\u00fcre\u00e7te arka u\u00e7 sunucusu \u00e7\u00f6kerse, Nginx zaten yan\u0131t\u0131 belle\u011finde tuttu\u011fu i\u00e7in istemciye sorunsuz bir \u015fekilde hizmet vermeye devam edebilir.<br \/>\n*   <strong>HTTP\/1.0 \u0130stemcileriyle Uyumluluk:<\/strong> Baz\u0131 eski HTTP\/1.0 istemcileri, yan\u0131t\u0131n tamam\u0131n\u0131 alana kadar ba\u011flant\u0131y\u0131 a\u00e7\u0131k tutmay\u0131 bekleyebilir. Ara belle\u011fe alma, Nginx&#8217;in bu t\u00fcr istemcilere tam yan\u0131t\u0131 sunmas\u0131na yard\u0131mc\u0131 olur.<\/p>\n<h3>Nginx Proxy Ara Bellek Mekanizmas\u0131<\/h3>\n<p>Nginx, varsay\u0131lan olarak proxy ara belle\u011fe almay\u0131 etkinle\u015ftirir. Bir istemci bir istek g\u00f6nderdi\u011finde:<br \/>\n1.  Nginx iste\u011fi arka u\u00e7 sunucusuna iletir.<br \/>\n2.  Arka u\u00e7 sunucusu yan\u0131t vermeye ba\u015flad\u0131\u011f\u0131nda, Nginx bu yan\u0131t\u0131 ara belle\u011fe almaya ba\u015flar. Yan\u0131t\u0131n ilk k\u0131sm\u0131 genellikle <code>proxy_buffer_size<\/code> taraf\u0131ndan belirlenen k\u00fc\u00e7\u00fck bir belle\u011fe al\u0131n\u0131r.<br \/>\n3.  Yan\u0131t\u0131n geri kalan\u0131, <code>proxy_buffers<\/code> taraf\u0131ndan belirlenen daha b\u00fcy\u00fck belleklere al\u0131n\u0131r.<br \/>\n4.  E\u011fer yan\u0131t, tahsis edilen bellek alan\u0131n\u0131 a\u015farsa, Nginx yan\u0131t\u0131 <code>proxy_temp_path<\/code> direktifiyle belirtilen ge\u00e7ici diske yazar.<br \/>\n5.  Yan\u0131t\u0131n tamam\u0131 ara belle\u011fe al\u0131nd\u0131ktan veya yeterli bir k\u0131sm\u0131 al\u0131nd\u0131ktan sonra, Nginx yan\u0131t\u0131 istemciye g\u00f6ndermeye ba\u015flar.<\/p>\n<h3>Ara Bellek Ayarlar\u0131<\/h3>\n<p>Ara belle\u011fe alma davran\u0131\u015f\u0131n\u0131 kontrol etmek i\u00e7in kullan\u0131lan temel Nginx direktifleri \u015funlard\u0131r:<\/p>\n<p>*   <strong><code>proxy_buffering<\/code>:<\/strong> Ara belle\u011fe almay\u0131 a\u00e7ar veya kapat\u0131r. Varsay\u0131lan olarak <code>on<\/code> (a\u00e7\u0131k) de\u011ferindedir. E\u011fer <code>off<\/code> olarak ayarlan\u0131rsa, Nginx arka u\u00e7 sunucusundan gelen yan\u0131t\u0131 do\u011frudan istemciye ak\u0131\u015f (stream) olarak iletir. Bu, d\u00fc\u015f\u00fck gecikme s\u00fcresi gerektiren uygulamalar (\u00f6rne\u011fin, uzun s\u00fcreli ba\u011flant\u0131lar, web soketleri) i\u00e7in uygun olabilir, ancak yukar\u0131da bahsedilen avantajlar\u0131 kaybedersiniz.<\/p>\n<pre><code class=\"language-nginx\">proxy_buffering on; # Varsay\u0131lan\n    # proxy_buffering off;<\/code><\/pre>\n<p>*   <strong><code>proxy_buffers<\/code>:<\/strong> Nginx&#8217;in arka u\u00e7 sunucusundan gelen yan\u0131t\u0131 ara belle\u011fe almak i\u00e7in kullanaca\u011f\u0131 bellek tamponlar\u0131n\u0131n say\u0131s\u0131n\u0131 ve boyutunu ayarlar. S\u00f6zdizimi <code>say\u0131 boyut<\/code> \u015feklindedir. \u00d6rne\u011fin, <code>4 8k<\/code> Nginx&#8217;in 8 kilobayt boyutunda 4 adet bellek tamponu kullanaca\u011f\u0131 anlam\u0131na gelir. Toplamda 32 kilobayt belle\u011fe al\u0131nabilir. Daha b\u00fcy\u00fck yan\u0131tlar i\u00e7in bu de\u011ferleri art\u0131rman\u0131z gerekebilir.<\/p>\n<pre><code class=\"language-nginx\">proxy_buffers 8 16k; # 16KB boyutunda 8 adet buffer, toplam 128KB<\/code><\/pre>\n<p>*   <strong><code>proxy_buffer_size<\/code>:<\/strong> Arka u\u00e7 sunucusundan gelen yan\u0131t\u0131n ilk k\u0131sm\u0131 i\u00e7in kullan\u0131lan tek bir ara belle\u011fin boyutunu ayarlar. Bu genellikle HTTP ba\u015fl\u0131klar\u0131n\u0131 ve yan\u0131t\u0131n ilk birka\u00e7 kilobayt\u0131n\u0131 i\u00e7erir. Varsay\u0131lan olarak <code>proxy_buffers<\/code> i\u00e7indeki <code>size<\/code> de\u011feri ile ayn\u0131d\u0131r, ancak daha k\u00fc\u00e7\u00fck bir de\u011ferle de ayarlanabilir.<\/p>\n<pre><code class=\"language-nginx\">proxy_buffer_size 8k;<\/code><\/pre>\n<p>*   <strong><code>proxy_busy_buffers_size<\/code>:<\/strong> Nginx&#8217;in bir anda istemciye g\u00f6ndermekle me\u015fgul olabilece\u011fi maksimum ara bellek boyutunu ayarlar. Bu de\u011fer, <code>proxy_buffers<\/code> taraf\u0131ndan tan\u0131mlanan toplam bellek boyutundan daha k\u00fc\u00e7\u00fck olmal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-nginx\">proxy_busy_buffers_size 16k;<\/code><\/pre>\n<p>*   <strong><code>proxy_temp_path<\/code>:<\/strong> Arka u\u00e7 sunucusundan gelen yan\u0131t\u0131n belle\u011fe s\u0131\u011fmamas\u0131 durumunda, Nginx&#8217;in ge\u00e7ici dosyalar\u0131 depolayaca\u011f\u0131 dizini belirtir. Bu dizin Nginx kullan\u0131c\u0131s\u0131 taraf\u0131ndan yaz\u0131labilir olmal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-nginx\">proxy_temp_path \/var\/cache\/nginx\/proxy_temp;<\/code><\/pre>\n<p>*   <strong><code>proxy_max_temp_file_size<\/code>:<\/strong> Ge\u00e7ici dosyalara yaz\u0131lacak maksimum boyutu ayarlar. E\u011fer yan\u0131t bu boyutu a\u015farsa, Nginx yan\u0131t\u0131 disk yerine do\u011frudan istemciye ak\u0131\u015f olarak g\u00f6ndermeye ba\u015flar (e\u011fer <code>proxy_buffering<\/code> a\u00e7\u0131ksa). <code>0<\/code> olarak ayarlan\u0131rsa, ge\u00e7ici dosyalara yazma tamamen devre d\u0131\u015f\u0131 b\u0131rak\u0131l\u0131r.<\/p>\n<pre><code class=\"language-nginx\">proxy_max_temp_file_size 1024m; # 1GB<\/code><\/pre>\n<p>Ara belle\u011fe alma, Nginx&#8217;in performans\u0131n\u0131 ve kararl\u0131l\u0131\u011f\u0131n\u0131 art\u0131ran g\u00fc\u00e7l\u00fc bir \u00f6zelliktir. Do\u011fru yap\u0131land\u0131rma ile, arka u\u00e7 sunucular\u0131n\u0131n y\u00fck\u00fcn\u00fc azaltabilir, istemci deneyimini iyile\u015ftirebilir ve sistemin genel dayan\u0131kl\u0131l\u0131\u011f\u0131n\u0131 art\u0131rabilirsiniz. Ancak, \u00e7ok b\u00fcy\u00fck tamponlar tan\u0131mlamak, Nginx sunucusunun bellek t\u00fcketimini art\u0131rabilir, bu y\u00fczden bu ayarlar dikkatli bir \u015fekilde optimize edilmelidir.<\/p>\n<h2>\u00d6nbelle\u011fe Alma (Caching)<\/h2>\n<p>\u00d6nbelle\u011fe alma, web performans\u0131n\u0131 art\u0131rmak ve arka u\u00e7 sunucular\u0131n\u0131n y\u00fck\u00fcn\u00fc azaltmak i\u00e7in en etkili y\u00f6ntemlerden biridir. Nginx, g\u00fc\u00e7l\u00fc bir ters proxy \u00f6nbelle\u011fi olarak i\u015flev g\u00f6rebilir. \u00d6nbelle\u011fe alma, s\u0131k eri\u015filen i\u00e7eri\u011fi Nginx sunucusunda depolayarak, ayn\u0131 i\u00e7eri\u011fe y\u00f6nelik sonraki isteklerde arka u\u00e7 sunucusuna gitme ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r.<\/p>\n<h3>\u00d6nbelle\u011fin Faydalar\u0131<\/h3>\n<p>*   <strong>Daha H\u0131zl\u0131 Yan\u0131t S\u00fcreleri:<\/strong> \u00d6nbelle\u011fe al\u0131nm\u0131\u015f i\u00e7erik, arka u\u00e7 sunucusuna bir istek g\u00f6ndermeye gerek kalmadan do\u011frudan Nginx&#8217;ten servis edildi\u011fi i\u00e7in \u00e7ok daha h\u0131zl\u0131d\u0131r.<br \/>\n*   <strong>Arka U\u00e7 Y\u00fck\u00fcn\u00fcn Azalt\u0131lmas\u0131:<\/strong> Arka u\u00e7 sunucular\u0131n\u0131n ayn\u0131 i\u00e7eri\u011fi tekrar tekrar \u00fcretme ve sunma y\u00fck\u00fcn\u00fc ortadan kald\u0131r\u0131r. Bu, \u00f6zellikle y\u00fcksek trafikli sitelerde CPU ve veritaban\u0131 kaynaklar\u0131ndan tasarruf sa\u011flar.<br \/>\n*   <strong>Trafik Y\u00fcksekli\u011fine Kar\u015f\u0131 Dayan\u0131kl\u0131l\u0131k:<\/strong> \u00d6nbellek, ani trafik art\u0131\u015flar\u0131n\u0131 (flash crowd) absorbe edebilir, b\u00f6ylece arka u\u00e7 sunucular\u0131n\u0131n \u00e7\u00f6kmesini \u00f6nler.<br \/>\n*   <strong>Hata Tolerans\u0131:<\/strong> Arka u\u00e7 sunucusu ge\u00e7ici olarak kullan\u0131lamaz hale gelirse, Nginx \u00f6nbelle\u011fe al\u0131nm\u0131\u015f eski i\u00e7eri\u011fi (stale content) sunmaya devam edebilir.<\/p>\n<h3>Nginx Proxy \u00d6nbellek Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Nginx&#8217;te \u00f6nbelle\u011fe alma iki ana direktif kullan\u0131larak yap\u0131land\u0131r\u0131l\u0131r: <code>proxy_cache_path<\/code> ve <code>proxy_cache<\/code>.<\/p>\n<p>1.  <strong><code>proxy_cache_path<\/code>:<\/strong> Bu direktif, \u00f6nbellek dosyalar\u0131n\u0131n depolanaca\u011f\u0131 dizini ve \u00f6nbelle\u011fin genel ayarlar\u0131n\u0131 tan\u0131mlar. Genellikle <code>http<\/code> ba\u011flam\u0131nda veya <code>server<\/code> ba\u011flam\u0131nda tan\u0131mlan\u0131r.<\/p>\n<pre><code class=\"language-nginx\">http {\n        proxy_cache_path \/var\/cache\/nginx\/my_cache levels=1:2 keys_zone=my_cache:10m inactive=60m max_size=1g;\n\n        server {\n            listen 80;\n            server_name example.com;\n\n            location \/ {\n                proxy_cache my_cache; # \u00d6nbelle\u011fi etkinle\u015ftir\n                proxy_pass http:\/\/backend_servers;\n                # Di\u011fer proxy ayarlar\u0131...\n            }\n        }\n    }<\/code><\/pre>\n<p>    Bu direktifin parametreleri \u015funlard\u0131r:<br \/>\n    *   <code>\/var\/cache\/nginx\/my_cache<\/code>: \u00d6nbellek dosyalar\u0131n\u0131n depolanaca\u011f\u0131 dizin yolu. Bu dizinin Nginx kullan\u0131c\u0131s\u0131 taraf\u0131ndan yaz\u0131labilir olmas\u0131 gerekir.<br \/>\n    *   <code>levels=1:2<\/code>: \u00d6nbellek hiyerar\u015fisinin derinli\u011fini ve dizin adlar\u0131n\u0131n uzunlu\u011funu tan\u0131mlar. \u00d6rne\u011fin, <code>levels=1:2<\/code> \u00f6nbellek dosyalar\u0131n\u0131n <code>\/var\/cache\/nginx\/my_cache\/c\/29\/xxxxxxxxxxxxxxxxxxxxxx<\/code> gibi bir yap\u0131da saklanaca\u011f\u0131 anlam\u0131na gelir. Bu, binlerce dosyan\u0131n tek bir dizinde depolanmas\u0131n\u0131 \u00f6nleyerek dosya sistemi performans\u0131n\u0131 art\u0131r\u0131r.<br \/>\n    *   <code>keys_zone=my_cache:10m<\/code>: \u00d6nbellek anahtarlar\u0131n\u0131 ve meta verilerini depolamak i\u00e7in payla\u015f\u0131ml\u0131 bir bellek alan\u0131 tan\u0131mlar. <code>my_cache<\/code> \u00f6nbellek alan\u0131n\u0131n ad\u0131d\u0131r ve <code>10m<\/code> (10 megabayt) boyutu, yakla\u015f\u0131k 80.000 aktif anahtar\u0131 depolayabilir.<br \/>\n    *   <code>inactive=60m<\/code>: Belirtilen s\u00fcre boyunca (60 dakika) eri\u015filmeyen \u00f6nbellek \u00f6\u011felerinin otomatik olarak silinmesini sa\u011flar.<br \/>\n    *   <code>max_size=1g<\/code>: \u00d6nbelle\u011fin disk \u00fczerindeki maksimum boyutunu ayarlar. Bu boyuta ula\u015f\u0131ld\u0131\u011f\u0131nda, Nginx en az kullan\u0131lan eski \u00f6\u011feleri silerek yer a\u00e7ar.<\/p>\n<p>2.  <strong><code>proxy_cache<\/code>:<\/strong> Bu direktif, belirli bir <code>location<\/code> veya <code>server<\/code> blo\u011fu i\u00e7inde \u00f6nbelle\u011fi etkinle\u015ftirmek i\u00e7in kullan\u0131l\u0131r ve <code>proxy_cache_path<\/code> ile tan\u0131mlanan \u00f6nbellek b\u00f6lgesinin ad\u0131n\u0131 al\u0131r.<\/p>\n<pre><code class=\"language-nginx\">proxy_cache my_cache;<\/code><\/pre>\n<h3>\u00d6nbellek Kontrol\u00fc ve Ge\u00e7ersiz K\u0131lma<\/h3>\n<p>*   <strong><code>proxy_cache_key<\/code>:<\/strong> \u00d6nbellek \u00f6\u011felerini benzersiz bir \u015fekilde tan\u0131mlamak i\u00e7in kullan\u0131lan anahtar\u0131 belirler. Varsay\u0131lan olarak <code>$scheme$proxy_host$request_uri<\/code> kullan\u0131l\u0131r, ancak bu, iste\u011fin y\u00f6ntemini (GET, POST), ba\u015fl\u0131klar\u0131 veya \u00e7erezleri i\u00e7erecek \u015fekilde \u00f6zelle\u015ftirilebilir.<\/p>\n<pre><code class=\"language-nginx\">proxy_cache_key \"$scheme$request_method$host$request_uri\";<\/code><\/pre>\n<p>*   <strong><code>proxy_cache_valid<\/code>:<\/strong> Farkl\u0131 HTTP durum kodlar\u0131 i\u00e7in \u00f6nbellek ge\u00e7erlilik s\u00fcrelerini ayarlar.<\/p>\n<pre><code class=\"language-nginx\">proxy_cache_valid 200 302 10m; # 200 ve 302 durum kodlar\u0131 i\u00e7in 10 dakika\n    proxy_cache_valid 404      1m;  # 404 durum kodu i\u00e7in 1 dakika\n    proxy_cache_valid any      1m;  # Di\u011fer t\u00fcm durum kodlar\u0131 i\u00e7in 1 dakika<\/code><\/pre>\n<p>*   <strong><code>proxy_cache_bypass<\/code>:<\/strong> Belirli ko\u015fullar alt\u0131nda \u00f6nbelle\u011fi atlayarak iste\u011fin do\u011frudan arka uca gitmesini sa\u011flar. Bu, genellikle kullan\u0131c\u0131 oturumlar\u0131 veya dinamik i\u00e7erik i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-nginx\">proxy_cache_bypass $http_pragma $http_authorization; # Pragma veya Authorization ba\u015fl\u0131\u011f\u0131 varsa \u00f6nbelle\u011fi atla<\/code><\/pre>\n<p>*   <strong><code>proxy_no_cache<\/code>:<\/strong> Belirli ko\u015fullar alt\u0131nda yan\u0131t\u0131n \u00f6nbelle\u011fe al\u0131nmas\u0131n\u0131 tamamen engeller.<\/p>\n<pre><code class=\"language-nginx\">proxy_no_cache $http_pragma $http_authorization;<\/code><\/pre>\n<p>*   <strong><code>add_header X-Cache-Status $upstream_cache_status;<\/code>:<\/strong> Bu ba\u015fl\u0131k, yan\u0131t\u0131n \u00f6nbellekten mi (HIT), arka u\u00e7tan m\u0131 (MISS), yoksa \u00f6nbelle\u011fin g\u00fcncellendi\u011fi s\u0131rada eski i\u00e7erik mi (STALE) servis edildi\u011fini g\u00f6sterir. Hata ay\u0131klama ve \u00f6nbellek performans\u0131n\u0131 izlemek i\u00e7in \u00e7ok kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h3>Geli\u015fmi\u015f \u00d6nbellek Stratejileri<\/h3>\n<p>*   <strong><code>proxy_cache_revalidate<\/code>:<\/strong> Bu direktif <code>on<\/code> olarak ayarland\u0131\u011f\u0131nda, Nginx \u00f6nbelle\u011fe al\u0131nm\u0131\u015f i\u00e7erik s\u00fcresi doldu\u011funda, arka uca bir <code>If-Modified-Since<\/code> veya <code>If-None-Match<\/code> ba\u015fl\u0131\u011f\u0131 ile ko\u015fullu bir istek g\u00f6nderir. E\u011fer i\u00e7erik de\u011fi\u015fmemi\u015fse, arka u\u00e7 304 (Not Modified) yan\u0131t\u0131 d\u00f6ner ve Nginx \u00f6nbelle\u011fi yeniden kullan\u0131r. Bu, bant geni\u015fli\u011finden tasarruf sa\u011flar.<\/p>\n<pre><code class=\"language-nginx\">proxy_cache_revalidate on;<\/code><\/pre>\n<p>*   <strong><code>proxy_cache_use_stale<\/code>:<\/strong> Bu direktif, arka u\u00e7 sunucusu kullan\u0131lamaz oldu\u011funda veya bir hata d\u00f6nd\u00fcrd\u00fc\u011f\u00fcnde Nginx&#8217;in s\u00fcresi dolmu\u015f (stale) \u00f6nbellek i\u00e7eri\u011fini sunmas\u0131na izin verir. Bu, y\u00fcksek eri\u015filebilirlik i\u00e7in kritik bir \u00f6zelliktir.<\/p>\n<pre><code class=\"language-nginx\">proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;<\/code><\/pre>\n<p>    <code>updating<\/code> parametresi, bir \u00f6\u011fe g\u00fcncellenirken Nginx&#8217;in eski bir s\u00fcr\u00fcm\u00fcn\u00fc sunmas\u0131na olanak tan\u0131r. Bu, &#8220;dog-pile effect&#8221; olarak bilinen durumu \u00f6nler; yani bir\u00e7ok istemcinin ayn\u0131 anda s\u00fcresi dolmu\u015f bir \u00f6\u011feyi istemesi ve arka u\u00e7 sunucusunu ayn\u0131 anda y\u00fcklemesi.<\/p>\n<p>*   <strong>\u00d6nbellek Temizleme (Purging):<\/strong> Nginx OSS s\u00fcr\u00fcm\u00fcnde yerle\u015fik bir \u00f6nbellek temizleme mekanizmas\u0131 bulunmaz. Ancak, \u00f6zel bir <code>location<\/code> blo\u011fu ve <code>proxy_cache_purge<\/code> (Nginx Plus veya 3. parti mod\u00fcl gerektirir) veya manuel dosya silme y\u00f6ntemleri ile bu i\u015flevsellik sa\u011flanabilir. Genellikle, \u00f6nbellek dosyalar\u0131n\u0131n sakland\u0131\u011f\u0131 dizinde belirli bir anahtara kar\u015f\u0131l\u0131k gelen dosyay\u0131 silmek en basit manuel y\u00f6ntemdir.<\/p>\n<p>\u00d6nbelle\u011fe alma, Nginx&#8217;in sundu\u011fu en g\u00fc\u00e7l\u00fc performans iyile\u015ftirme ara\u00e7lar\u0131ndan biridir. Do\u011fru yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131nda, web uygulamalar\u0131n\u0131z\u0131n yan\u0131t s\u00fcrelerini dramatik bir \u015fekilde h\u0131zland\u0131rabilir ve altyap\u0131n\u0131z\u0131n genel verimlili\u011fini art\u0131rabilir.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Nginx, modern web altyap\u0131lar\u0131n\u0131n vazge\u00e7ilmez bir bile\u015fenidir. HTTP proxying, y\u00fck dengeleme, ara belle\u011fe alma ve \u00f6nbelle\u011fe alma gibi temel yetenekleri sayesinde, web uygulamalar\u0131n\u0131n performans\u0131n\u0131, g\u00fcvenli\u011fini, \u00f6l\u00e7eklenebilirli\u011fini ve eri\u015filebilirli\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r.<\/p>\n<p>Ters proxy olarak Nginx, arka u\u00e7 sunucular\u0131n\u0131 d\u0131\u015f d\u00fcnyaya kar\u015f\u0131 korurken, ayn\u0131 zamanda SSL sonland\u0131rma ve URL yeniden yazma gibi hizmetler sunar. Y\u00fck dengeleme mekanizmalar\u0131, gelen trafi\u011fi birden fazla sunucu aras\u0131nda ak\u0131ll\u0131ca da\u011f\u0131tarak y\u00fcksek eri\u015filebilirlik ve hata tolerans\u0131 sa\u011flar. Ara belle\u011fe alma, istemci ve sunucu aras\u0131ndaki h\u0131z farkl\u0131l\u0131klar\u0131n\u0131 y\u00f6neterek arka u\u00e7 kaynaklar\u0131n\u0131n daha verimli kullan\u0131lmas\u0131n\u0131 sa\u011flar. Son olarak, \u00f6nbelle\u011fe alma, s\u0131k eri\u015filen i\u00e7eri\u011fi Nginx \u00fczerinde tutarak yan\u0131t s\u00fcrelerini k\u0131salt\u0131r ve arka u\u00e7 sunucular\u0131n\u0131n y\u00fck\u00fcn\u00fc azalt\u0131r.<\/p>\n<p>Bu mekanizmalar\u0131n her biri, Nginx&#8217;i sadece bir web sunucusu olmaktan \u00e7\u0131kar\u0131p, karma\u015f\u0131k ve y\u00fcksek performansl\u0131 web mimarileri i\u00e7in kapsaml\u0131 bir \u00e7\u00f6z\u00fcm haline getirir. Nginx yap\u0131land\u0131rma dosyalar\u0131ndaki direktifleri do\u011fru bir \u015fekilde anlamak ve uygulamak, web altyap\u0131n\u0131z\u0131 optimize etmenin ve kullan\u0131c\u0131lar\u0131n\u0131za \u00fcst\u00fcn bir deneyim sunman\u0131n anahtar\u0131d\u0131r. Bu makalede ele al\u0131nan kavramlar ve \u00f6rnekler, Nginx&#8217;in bu g\u00fc\u00e7l\u00fc \u00f6zelliklerini etkin bir \u015fekilde kullanman\u0131z i\u00e7in sa\u011flam bir temel sa\u011flamaktad\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Nginx HTTP Proxying, Y\u00fck Dengeleme, Ara Belle\u011fe Alma ve \u00d6nbelle\u011fe Alma Mekanizmalar\u0131n\u0131 Anlamak Giri\u015f Modern web uygulamalar\u0131, artan trafik, y\u00fcksek eri\u015filebilirlik gereksinimleri ve performans beklentileri nedeniyle karma\u015f\u0131k bir altyap\u0131ya ihtiya\u00e7 duyar.","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":[1504],"tags":[],"class_list":{"0":"post-41625","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-nginx","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>Nginx HTTP Proxying, Y\u00fck Dengeleme, Ara Belle\u011fe Alma ve \u00d6nbelle\u011fe Alma Mekanizmalar\u0131n\u0131 Anlamak - 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\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nginx HTTP Proxying, Y\u00fck Dengeleme, Ara Belle\u011fe Alma ve \u00d6nbelle\u011fe Alma Mekanizmalar\u0131n\u0131 Anlamak\" \/>\n<meta property=\"og:description\" content=\"Nginx HTTP Proxying, Y\u00fck Dengeleme, Ara Belle\u011fe Alma ve \u00d6nbelle\u011fe Alma Mekanizmalar\u0131n\u0131 Anlamak Giri\u015f Modern web uygulamalar\u0131, artan trafik, y\u00fcksek eri\u015filebilirlik gereksinimleri ve performans beklentileri nedeniyle karma\u015f\u0131k bir altyap\u0131ya ihtiya\u00e7 duyar.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-07T05:00:48+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=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Nginx HTTP Proxying, Y\u00fck Dengeleme, Ara Belle\u011fe Alma ve \u00d6nbelle\u011fe Alma Mekanizmalar\u0131n\u0131 Anlamak\",\"datePublished\":\"2026-05-07T05:00:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/\"},\"wordCount\":3356,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Nginx\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/\",\"name\":\"Nginx HTTP Proxying, Y\u00fck Dengeleme, Ara Belle\u011fe Alma ve \u00d6nbelle\u011fe Alma Mekanizmalar\u0131n\u0131 Anlamak - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-05-07T05:00:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Nginx HTTP Proxying, Y\u00fck Dengeleme, Ara Belle\u011fe Alma ve \u00d6nbelle\u011fe Alma Mekanizmalar\u0131n\u0131 Anlamak\"}]},{\"@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":"Nginx HTTP Proxying, Y\u00fck Dengeleme, Ara Belle\u011fe Alma ve \u00d6nbelle\u011fe Alma Mekanizmalar\u0131n\u0131 Anlamak - 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\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/","og_locale":"tr_TR","og_type":"article","og_title":"Nginx HTTP Proxying, Y\u00fck Dengeleme, Ara Belle\u011fe Alma ve \u00d6nbelle\u011fe Alma Mekanizmalar\u0131n\u0131 Anlamak","og_description":"Nginx HTTP Proxying, Y\u00fck Dengeleme, Ara Belle\u011fe Alma ve \u00d6nbelle\u011fe Alma Mekanizmalar\u0131n\u0131 Anlamak Giri\u015f Modern web uygulamalar\u0131, artan trafik, y\u00fcksek eri\u015filebilirlik gereksinimleri ve performans beklentileri nedeniyle karma\u015f\u0131k bir altyap\u0131ya ihtiya\u00e7 duyar.","og_url":"https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-05-07T05:00:48+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Nginx HTTP Proxying, Y\u00fck Dengeleme, Ara Belle\u011fe Alma ve \u00d6nbelle\u011fe Alma Mekanizmalar\u0131n\u0131 Anlamak","datePublished":"2026-05-07T05:00:48+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/"},"wordCount":3356,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Nginx"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/","url":"https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/","name":"Nginx HTTP Proxying, Y\u00fck Dengeleme, Ara Belle\u011fe Alma ve \u00d6nbelle\u011fe Alma Mekanizmalar\u0131n\u0131 Anlamak - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-05-07T05:00:48+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/nginx-http-proxying-yuk-dengeleme-ara-bellege-alma-ve-onbellege-alma-mekanizmalarini-anlamak\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Nginx HTTP Proxying, Y\u00fck Dengeleme, Ara Belle\u011fe Alma ve \u00d6nbelle\u011fe Alma Mekanizmalar\u0131n\u0131 Anlamak"}]},{"@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\/41625","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=41625"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41625\/revisions"}],"predecessor-version":[{"id":41626,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/41625\/revisions\/41626"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=41625"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=41625"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=41625"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}