{"id":36152,"date":"2025-12-09T08:21:10","date_gmt":"2025-12-09T05:21:10","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/"},"modified":"2025-12-09T08:21:10","modified_gmt":"2025-12-09T05:21:10","slug":"nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/","title":{"rendered":"Nginx Nedir ve Konum Bloklar\u0131 Neden Bu Kadar \u00d6nemli? (Giri\u015f ve Temel Kavramlar)"},"content":{"rendered":"<p><title>Nginx Sunucu ve Konum Blo\u011fu Se\u00e7im Algoritmalar\u0131: Derinlemesine Bir Bak\u0131\u015f<\/title><\/p>\n<p>Web uygulamalar\u0131n\u0131z\u0131n performans\u0131 ve g\u00fcvenli\u011fi, sunucu yap\u0131land\u0131rman\u0131zla do\u011frudan ili\u015fkilidir. \u00d6zellikle y\u00fcksek trafikli sitelerde, Nginx gibi g\u00fc\u00e7l\u00fc bir web sunucusunun do\u011fru yap\u0131land\u0131r\u0131lmas\u0131 hayati \u00f6nem ta\u015f\u0131r. Peki, Nginx gelen bir iste\u011fi hangi <code>location<\/code> blo\u011funa y\u00f6nlendirece\u011fine nas\u0131l karar verir? Bu karma\u015f\u0131k se\u00e7im algoritmas\u0131n\u0131 anlamak, sitenizin h\u0131z\u0131n\u0131 art\u0131rmak, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapatmak ve bak\u0131m s\u00fcre\u00e7lerini kolayla\u015ft\u0131rmak i\u00e7in kritik bir ad\u0131md\u0131r. Bu makale, Nginx&#8217;in konum blo\u011fu se\u00e7im mekanizmalar\u0131n\u0131 derinlemesine inceleyerek, bu s\u00fcre\u00e7teki gizem perdesini aralayacak ve size pratik uygulamalarla yol g\u00f6sterecek.<\/p>\n<h2>Nginx Nedir ve Konum Bloklar\u0131 Neden Bu Kadar \u00d6nemli? (Giri\u015f ve Temel Kavramlar)<\/h2>\n<p>Nginx (Engine-X olarak okunur), a\u00e7\u0131k kaynakl\u0131, y\u00fcksek performansl\u0131 bir HTTP ve ters proxy sunucusu, posta proxy sunucusu ve genel bir TCP\/UDP proxy sunucusudur. Y\u00fcksek e\u015fzamanl\u0131 ba\u011flant\u0131lar\u0131 i\u015fleme yetene\u011fi ve d\u00fc\u015f\u00fck bellek t\u00fcketimi sayesinde, modern web altyap\u0131lar\u0131n\u0131n vazge\u00e7ilmez bir par\u00e7as\u0131 haline gelmi\u015ftir. Facebook, Netflix ve WordPress gibi devasa platformlar bile altyap\u0131lar\u0131nda Nginx&#8217;i kullanmaktad\u0131r. Geleneksel sunucular\u0131n aksine, Nginx olay tabanl\u0131 (event-driven) ve asenkron bir mimariye sahiptir. Bu mimari, ayn\u0131 anda binlerce iste\u011fi verimli bir \u015fekilde y\u00f6netmesini sa\u011flar, bu da onu \u00f6zellikle y\u00fcksek trafikli web siteleri ve uygulamalar i\u00e7in ideal k\u0131lar.<\/p>\n<p>Peki, Nginx&#8217;in bu kadar etkili olmas\u0131n\u0131 sa\u011flayan temel bile\u015fenlerden biri nedir? Cevap: <strong>konum bloklar\u0131<\/strong> (<code>location<\/code> blocks). Nginx yap\u0131land\u0131rma dosyas\u0131ndaki bu bloklar, gelen URL isteklerinin belirli bir yol veya kal\u0131pla e\u015fle\u015fti\u011finde nas\u0131l i\u015flenece\u011fini tan\u0131mlar. \u00d6rne\u011fin, bir web sitesi d\u00fc\u015f\u00fcn\u00fcn; statik dosyalar (CSS, JavaScript, resimler) belirli bir klas\u00f6rden sunulurken, dinamik i\u00e7erik (PHP, Python, Node.js uygulamalar\u0131) ba\u015fka bir sunucuya veya uygulama yorumlay\u0131c\u0131s\u0131na y\u00f6nlendirilebilir. Nginx, bu farkl\u0131 istekleri do\u011fru yere y\u00f6nlendirmek i\u00e7in <code>location<\/code> bloklar\u0131n\u0131 kullan\u0131r. Her bir <code>location<\/code> blo\u011fu, belirli bir URL yoluna veya d\u00fczenli ifadeye (regex) g\u00f6re kurallar belirler. Bu kurallar, iste\u011fin hangi k\u00f6k dizinden servis edilece\u011fini, hangi proxy sunucusuna iletilece\u011fini, hangi \u00f6nbellekleme politikalar\u0131n\u0131n uygulanaca\u011f\u0131n\u0131 veya hangi HTTP ba\u015fl\u0131klar\u0131n\u0131n eklenece\u011fini i\u00e7erebilir.<\/p>\n<p>Konum bloklar\u0131n\u0131n \u00f6nemi sadece y\u00f6nlendirme ile s\u0131n\u0131rl\u0131 de\u011fildir. Ayn\u0131 zamanda g\u00fcvenlik, performans ve \u00f6l\u00e7eklenebilirlik a\u00e7\u0131s\u0131ndan da kritik rol oynarlar. Yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f bir <code>location<\/code> blo\u011fu, uygulaman\u0131z\u0131n hassas dosyalar\u0131n\u0131 a\u00e7\u0131\u011fa \u00e7\u0131karabilir veya performans d\u00fc\u015f\u00fc\u015flerine neden olabilir. \u00d6te yandan, iyi optimize edilmi\u015f bir <code>location<\/code> blo\u011fu, statik i\u00e7eri\u011fi h\u0131zla sunarak sunucu y\u00fck\u00fcn\u00fc azalt\u0131r, dinamik i\u00e7eri\u011fi do\u011fru uygulama sunucular\u0131na y\u00f6nlendirir ve hatta k\u00f6t\u00fc niyetli istekleri engelleyebilir. Bu nedenle, Nginx&#8217;in bir iste\u011fi birden fazla <code>location<\/code> blo\u011fu aras\u0131ndan nas\u0131l se\u00e7ti\u011fini anlamak, her Nginx y\u00f6neticisi i\u00e7in temel bir yetkinliktir. Bu algoritmalar, karma\u015f\u0131k web uygulamalar\u0131n\u0131n sorunsuz \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayan g\u00f6r\u00fcnmez bir orkestrasyon g\u00f6revi g\u00f6r\u00fcr. \u00d6n\u00fcm\u00fczdeki b\u00f6l\u00fcmlerde, bu algoritmalar\u0131n derinliklerine inecek ve ger\u00e7ek d\u00fcnya senaryolar\u0131yla nas\u0131l \u00e7al\u0131\u015ft\u0131klar\u0131n\u0131 detayl\u0131 bir \u015fekilde inceleyece\u011fiz.<\/p>\n<h2>Konum Blo\u011fu E\u015fle\u015ftirme Algoritmalar\u0131 Nas\u0131l \u00c7al\u0131\u015f\u0131r? (Temel Se\u00e7im Mant\u0131\u011f\u0131)<\/h2>\n<p>Nginx, gelen bir HTTP iste\u011fini i\u015flerken, URL yolunu (URI) yap\u0131land\u0131rma dosyas\u0131ndaki <code>server<\/code> blo\u011fu i\u00e7inde tan\u0131mlanm\u0131\u015f <code>location<\/code> bloklar\u0131yla e\u015fle\u015ftirmeye \u00e7al\u0131\u015f\u0131r. Bu e\u015fle\u015ftirme s\u00fcreci belirli bir s\u0131ra ve \u00f6ncelik hiyerar\u015fisine g\u00f6re ger\u00e7ekle\u015fir. Bu hiyerar\u015fiyi anlamak, beklendi\u011fi gibi \u00e7al\u0131\u015fan ve performansl\u0131 bir Nginx yap\u0131land\u0131rmas\u0131 olu\u015fturman\u0131n anahtar\u0131d\u0131r. Nginx, e\u015fle\u015fme i\u00e7in d\u00f6rt ana t\u00fcrde konum blo\u011fu tan\u0131mlay\u0131c\u0131s\u0131 kullan\u0131r: tam e\u015fle\u015fme (<code>=<\/code>), prefix e\u015fle\u015fme (<code>^~<\/code> veya modifiyesiz), d\u00fczenli ifade e\u015fle\u015fmeleri (<code>~<\/code> ve <code>~*<\/code>). Bu t\u00fcrler, belirli bir s\u0131raya g\u00f6re de\u011ferlendirilir ve ilk e\u015fle\u015fen blo\u011fun bulunmas\u0131 durumunda i\u015flem durdurulabilir veya devam edebilir.<\/p>\n<p>Nginx&#8217;in e\u015fle\u015ftirme algoritmas\u0131 temel olarak \u015fu ad\u0131mlar\u0131 izler:<\/p>\n<ol>\n<li><strong>Tam E\u015fle\u015fme (<code>=<\/code>):<\/strong> Nginx \u00f6ncelikle URL&#8217;yi tam olarak e\u015fle\u015fen bir <code>location<\/code> blo\u011fu arar. E\u011fer tam bir e\u015fle\u015fme bulunursa, bu blok hemen se\u00e7ilir ve ba\u015fka hi\u00e7bir arama yap\u0131lmaz. Bu, en y\u00fcksek \u00f6nceli\u011fe sahip e\u015fle\u015fme t\u00fcr\u00fcd\u00fcr ve genellikle k\u00f6k dizin (<code>\/<\/code>) veya belirli, sabit URL&#8217;ler i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><strong>Prefix E\u015fle\u015fmeleri (<code>^~<\/code> ve Modifiyesiz):<\/strong> E\u011fer tam e\u015fle\u015fme bulunamazsa, Nginx prefix (\u00f6n ek) e\u015fle\u015fmelerini de\u011ferlendirir.\n<ul>\n<li><strong><code>^~<\/code> (Prefix E\u015fle\u015fme, D\u00fczenli \u0130fade Aramas\u0131n\u0131 Durdur):<\/strong> Bu modifiyeli prefix e\u015fle\u015fmesi, e\u011fer bir e\u015fle\u015fme bulunursa, Nginx&#8217;in d\u00fczenli ifade (regex) tabanl\u0131 <code>location<\/code> bloklar\u0131n\u0131 aramay\u0131 durdurmas\u0131n\u0131 sa\u011flar. Bu, genellikle statik dosyalar\u0131n sunuldu\u011fu veya belirli bir yolun regex kontrol\u00fcnden muaf tutulmas\u0131 gereken durumlarda kullan\u0131l\u0131r. E\u011fer bir <code>^~<\/code> blo\u011fu e\u015fle\u015firse, bu blok se\u00e7ilir ve d\u00fczenli ifade aramas\u0131 atlan\u0131r.<\/li>\n<li><strong>Modifiyesiz Prefix E\u015fle\u015fmesi:<\/strong> E\u011fer <code>^~<\/code> ile bir e\u015fle\u015fme bulunamazsa veya <code>^~<\/code> blo\u011fu yoksa, Nginx modifiyesiz prefix e\u015fle\u015fmelerini de\u011ferlendirir. Bu t\u00fcr e\u015fle\u015fmeler, URL&#8217;nin ba\u015flang\u0131c\u0131n\u0131n belirtilen yol ile e\u015fle\u015fip e\u015fle\u015fmedi\u011fine bakar. Nginx, en uzun e\u015fle\u015fen prefix blo\u011funu se\u00e7er. Ancak bu e\u015fle\u015fme, ge\u00e7ici bir e\u015fle\u015fmedir ve d\u00fczenli ifade e\u015fle\u015fmelerinin potansiyel olarak daha y\u00fcksek \u00f6nceli\u011fe sahip olabilece\u011fi g\u00f6z \u00f6n\u00fcnde bulundurularak, arama d\u00fczenli ifade bloklar\u0131yla devam eder.<\/li>\n<\/ul>\n<\/li>\n<li><strong>D\u00fczenli \u0130fade E\u015fle\u015fmeleri (<code>~<\/code> ve <code>~*<\/code>):<\/strong> Prefix e\u015fle\u015fmelerinden sonra (<code>^~<\/code> ile durdurulmad\u0131\u011f\u0131 s\u00fcrece), Nginx d\u00fczenli ifade e\u015fle\u015fmelerini de\u011ferlendirir.\n<ul>\n<li><strong><code>~<\/code> (B\u00fcy\u00fck\/K\u00fc\u00e7\u00fck Harf Duyarl\u0131 Regex):<\/strong> Bu modifikat\u00f6r, URL&#8217;nin belirtilen d\u00fczenli ifadeyle b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyarl\u0131 bir \u015fekilde e\u015fle\u015fip e\u015fle\u015fmedi\u011fini kontrol eder.<\/li>\n<li><strong><code>~*<\/code> (B\u00fcy\u00fck\/K\u00fc\u00e7\u00fck Harf Duyars\u0131z Regex):<\/strong> Bu modifikat\u00f6r, b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131z bir d\u00fczenli ifade e\u015fle\u015fmesi yapar.<\/li>\n<\/ul>\n<p>        Nginx, yap\u0131land\u0131rma dosyas\u0131nda ilk tan\u0131mlanan d\u00fczenli ifade e\u015fle\u015fmesini se\u00e7er. Yani, birden fazla regex blo\u011fu e\u015fle\u015fiyorsa, dosyada yukar\u0131da olan kazan\u0131r.\n    <\/li>\n<li><strong>Son \u00c7are Prefix E\u015fle\u015fmesi:<\/strong> E\u011fer yukar\u0131daki hi\u00e7bir e\u015fle\u015fme bulunamazsa, Nginx daha \u00f6nce ge\u00e7ici olarak se\u00e7ilen en uzun modifiyesiz prefix e\u015fle\u015fmesini kullan\u0131r. Bu, genellikle k\u00f6k dizin (<code>\/<\/code>) i\u00e7in tan\u0131mlanan varsay\u0131lan bir <code>location<\/code> blo\u011fu olur.<\/li>\n<\/ol>\n<p>Bu s\u0131ralama, Nginx&#8217;in esnekli\u011fini ve g\u00fcc\u00fcn\u00fc ortaya koyar. Do\u011fru e\u015fle\u015fme t\u00fcr\u00fcn\u00fc do\u011fru yerde kullanmak, hem performans\u0131 optimize eder hem de beklenmedik y\u00f6nlendirmelerin \u00f6n\u00fcne ge\u00e7er. \u00d6rne\u011fin, statik dosyalar i\u00e7in <code>^~<\/code> kullanmak, Nginx&#8217;in gereksiz yere d\u00fczenli ifade aramalar\u0131 yapmas\u0131n\u0131 engelleyerek CPU d\u00f6ng\u00fclerinden tasarruf etmesini sa\u011flar. Dinamik veya karma\u015f\u0131k URL yap\u0131lar\u0131 i\u00e7in ise d\u00fczenli ifadeler vazge\u00e7ilmezdir. \u015eimdi, bu e\u015fle\u015fme t\u00fcrlerini daha yak\u0131ndan inceleyelim ve pratik \u00f6rneklerle nas\u0131l uyguland\u0131klar\u0131n\u0131 g\u00f6relim.<\/p>\n<h3><code class=\"language-\">=<\/code> (Tam E\u015fle\u015fme) ile H\u0131zl\u0131 Y\u00f6nlendirmeler Nas\u0131l Yap\u0131l\u0131r?<\/h3>\n<p>Nginx&#8217;teki <code>=<\/code> modifikat\u00f6r\u00fc, konum blo\u011fu se\u00e7iminde en y\u00fcksek \u00f6nceli\u011fe sahiptir ve tam e\u015fle\u015fme i\u00e7in kullan\u0131l\u0131r. Bir iste\u011fin URI&#8217;si, <code>=<\/code> ile tan\u0131mlanm\u0131\u015f bir <code>location<\/code> blo\u011fundaki yol ile tam olarak e\u015fle\u015firse, Nginx hemen bu blo\u011fu se\u00e7er ve ba\u015fka hi\u00e7bir <code>location<\/code> blo\u011funu kontrol etmez. Bu durum, \u00f6zellikle belirli bir URL&#8217;nin kesin ve h\u0131zl\u0131 bir \u015fekilde i\u015flenmesi gerekti\u011finde son derece faydal\u0131d\u0131r. \u00d6rne\u011fin, bir sitenin k\u00f6k dizinine (<code>\/<\/code>) yap\u0131lan istekler veya belirli bir dosya (<code>\/favicon.ico<\/code>, <code>\/robots.txt<\/code>) i\u00e7in \u00f6zel kurallar tan\u0131mlamak istedi\u011finizde bu modifikat\u00f6r idealdir.<\/p>\n<p>Tam e\u015fle\u015fmenin en b\u00fcy\u00fck avantaj\u0131 performanst\u0131r. Nginx, <code>=<\/code> ile e\u015fle\u015fti\u011finde algoritmay\u0131 durdurdu\u011fu i\u00e7in, gereksiz hesaplamalar ve di\u011fer <code>location<\/code> bloklar\u0131n\u0131n de\u011ferlendirilmesi atlan\u0131r. Bu da \u00f6zellikle y\u00fcksek trafikli ortamlarda sunucu kaynaklar\u0131ndan tasarruf edilmesini sa\u011flar ve yan\u0131t s\u00fcrelerini k\u0131salt\u0131r. Genellikle, web sitelerinin ana sayfa istekleri veya s\u0131k\u00e7a istenen k\u00fc\u00e7\u00fck statik dosyalar i\u00e7in bu modifikat\u00f6r kullan\u0131l\u0131r.<\/p>\n<p>\u0130\u015fte bir \u00f6rnek:<\/p>\n<pre><code>\nserver {\n    listen 80;\n    server_name example.com;\n\n    # K\u00f6k dizin i\u00e7in tam e\u015fle\u015fme\n    location = \/ {\n        root \/var\/www\/html\/public;\n        index index.html index.htm;\n        try_files $uri $uri\/ =404;\n    }\n\n    # Favicon i\u00e7in tam e\u015fle\u015fme\n    location = \/favicon.ico {\n        root \/var\/www\/html\/static;\n        expires 30d; # Favicon'u 30 g\u00fcn \u00f6nbellekle\n        log_not_found off; # Loglara bulunamad\u0131 hatas\u0131 yazma\n        access_log off; # Eri\u015fim logu yazma\n    }\n\n    # Robots.txt i\u00e7in tam e\u015fle\u015fme\n    location = \/robots.txt {\n        root \/var\/www\/html\/static;\n        expires 7d;\n        log_not_found off;\n        access_log off;\n    }\n\n    # Di\u011fer t\u00fcm istekler i\u00e7in varsay\u0131lan prefix e\u015fle\u015fmesi\n    location \/ {\n        root \/var\/www\/html\/public;\n        try_files $uri $uri\/ \/index.php?$query_string; # PHP uygulamas\u0131 i\u00e7in\n    }\n}\n<\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte:<\/p>\n<ul>\n<li><code>location = \/<\/code> blo\u011fu, tam olarak <code>http:\/\/example.com\/<\/code> adresine yap\u0131lan istekleri yakalar. Bu, web sitenizin ana sayfas\u0131n\u0131n h\u0131zl\u0131 bir \u015fekilde sunulmas\u0131n\u0131 sa\u011flar.<\/li>\n<li><code>location = \/favicon.ico<\/code> ve <code>location = \/robots.txt<\/code> bloklar\u0131, s\u0131ras\u0131yla <code>\/favicon.ico<\/code> ve <code>\/robots.txt<\/code> URL&#8217;lerine yap\u0131lan istekleri hedefler. Bu dosyalar genellikle k\u00fc\u00e7\u00fckt\u00fcr ve s\u0131k\u00e7a istenir, bu nedenle tam e\u015fle\u015fme ile h\u0131zl\u0131 bir \u015fekilde sunulmalar\u0131 performans\u0131 art\u0131r\u0131r. Ayr\u0131ca, <code>expires<\/code> y\u00f6nergesi ile taray\u0131c\u0131 \u00f6nbelleklemesi etkinle\u015ftirilir, <code>log_not_found off<\/code> ve <code>access_log off<\/code> ile gereksiz g\u00fcnl\u00fck kayd\u0131 engellenir.<\/li>\n<\/ul>\n<p>Bu yakla\u015f\u0131m, \u00f6zellikle statik dosyalar\u0131n yo\u011fun oldu\u011fu veya belirli URL&#8217;lerin \u00f6zel i\u015flem gerektirdi\u011fi senaryolarda performans\u0131 maksimize etmek i\u00e7in harikad\u0131r. Tam e\u015fle\u015fme, di\u011fer daha karma\u015f\u0131k e\u015fle\u015fme t\u00fcrlerine ge\u00e7meden \u00f6nce Nginx&#8217;in i\u015f y\u00fck\u00fcn\u00fc \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r. Bu sayede sunucunuz daha verimli \u00e7al\u0131\u015f\u0131r ve kullan\u0131c\u0131lar\u0131n\u0131z daha h\u0131zl\u0131 yan\u0131t s\u00fcreleri deneyimler.<\/p>\n<div class=\"tip\">\n<p>Uzman \u0130pucu: Nginx&#8217;in i\u015flem g\u00fcc\u00fcnden tasarruf etmek i\u00e7in, ana sayfa (<code>\/<\/code>) ve s\u0131k\u00e7a istenen k\u00fc\u00e7\u00fck, statik dosyalar (<code>\/favicon.ico<\/code>, <code>\/robots.txt<\/code>) i\u00e7in mutlaka <code>=<\/code> tam e\u015fle\u015fmesini kullan\u0131n. Bu, Nginx&#8217;in di\u011fer e\u015fle\u015fmeleri aramay\u0131 durdurmas\u0131n\u0131 sa\u011flayarak performans\u0131 g\u00f6zle g\u00f6r\u00fcl\u00fcr \u015fekilde art\u0131r\u0131r.<\/p>\n<\/div>\n<h3><code class=\"language-\">^~<\/code> (Prefix E\u015fle\u015fme) ile Regex Karma\u015fas\u0131ndan Nas\u0131l Ka\u00e7\u0131l\u0131r?<\/h3>\n<p><code>^~<\/code> modifikat\u00f6r\u00fc, Nginx&#8217;in konum blo\u011fu se\u00e7im algoritmalar\u0131nda \u00f6zel bir yere sahiptir. Bu modifikat\u00f6r, &#8220;e\u011fer bu prefix (\u00f6n ek) e\u015fle\u015firse, d\u00fczenli ifade (regex) tabanl\u0131 <code>location<\/code> bloklar\u0131n\u0131 aramay\u0131 durdur&#8221; anlam\u0131na gelir. Ba\u015fka bir deyi\u015fle, <code>^~<\/code> ile tan\u0131mlanm\u0131\u015f bir blok, URL&#8217;nin ba\u015flang\u0131c\u0131yla e\u015fle\u015fti\u011finde, Nginx&#8217;in daha sonraki d\u00fczenli ifade e\u015fle\u015fmelerini (<code>~<\/code> ve <code>~*<\/code>) tamamen atlamas\u0131n\u0131 sa\u011flar. Bu, \u00f6zellikle belirli bir URL yolunun alt\u0131ndaki t\u00fcm isteklerin, d\u00fczenli ifadelerin karma\u015f\u0131kl\u0131\u011f\u0131na veya potansiyel performans maliyetine maruz kalmadan belirli bir \u015fekilde i\u015flenmesini istedi\u011finiz durumlarda son derece faydal\u0131d\u0131r.<\/p>\n<p>Bu modifikat\u00f6r\u00fcn en yayg\u0131n kullan\u0131m alan\u0131, statik dosyalar\u0131n (resimler, CSS, JavaScript dosyalar\u0131, fontlar vb.) sunulmas\u0131d\u0131r. Genellikle bu t\u00fcr dosyalar belirli bir dizin alt\u0131nda bulunur (\u00f6rne\u011fin, <code>\/static\/<\/code> veya <code>\/assets\/<\/code>). Bu dosyalar i\u00e7in d\u00fczenli ifade e\u015fle\u015fmelerine ihtiya\u00e7 duyulmaz ve hatta bunlar\u0131 regex kontrol\u00fcnden muaf tutmak, performans\u0131 art\u0131rabilir. \u00c7\u00fcnk\u00fc d\u00fczenli ifade e\u015fle\u015fmeleri, prefix e\u015fle\u015fmelerine g\u00f6re daha fazla CPU kayna\u011f\u0131 t\u00fcketir.<\/p>\n<p>\u0130\u015fte bir \u00f6rnek:<\/p>\n<pre><code>\nserver {\n    listen 80;\n    server_name example.com;\n\n    # Statik dosyalar i\u00e7in ^~ prefix e\u015fle\u015fmesi\n    location ^~ \/static\/ {\n        root \/var\/www\/html; # \/var\/www\/html\/static\/ yoluna e\u015fle\u015fir\n        expires 30d;\n        add_header Cache-Control \"public, no-transform\";\n        access_log off;\n        log_not_found off;\n    }\n\n    location ^~ \/assets\/ {\n        root \/var\/www\/html; # \/var\/www\/html\/assets\/ yoluna e\u015fle\u015fir\n        expires 30d;\n        add_header Cache-Control \"public, no-transform\";\n        access_log off;\n        log_not_found off;\n    }\n\n    # PHP dosyalar\u0131n\u0131 i\u015fleyen regex blo\u011fu\n    location ~ \\.php$ {\n        include snippets\/fastcgi-php.conf;\n        fastcgi_pass unix:\/var\/run\/php\/php7.4-fpm.sock;\n    }\n\n    # Di\u011fer t\u00fcm istekler i\u00e7in varsay\u0131lan blok\n    location \/ {\n        root \/var\/www\/html\/public;\n        index index.html index.htm index.php;\n        try_files $uri $uri\/ \/index.php?$query_string;\n    }\n}\n<\/code><\/pre>\n<p>Bu \u00f6rnekte:<\/p>\n<ul>\n<li><code>location ^~ \/static\/<\/code> blo\u011fu, <code>\/static\/<\/code> ile ba\u015flayan t\u00fcm URL&#8217;leri e\u015fle\u015ftirir (\u00f6rne\u011fin, <code>\/static\/css\/style.css<\/code>, <code>\/static\/images\/logo.png<\/code>). Nginx bu blo\u011fu e\u015fle\u015ftirdi\u011finde, daha sonra tan\u0131mlanm\u0131\u015f olan <code>location ~ \\.php$<\/code> gibi d\u00fczenli ifade bloklar\u0131n\u0131 tamamen atlar. Bu, statik dosyalar\u0131n h\u0131zl\u0131 ve verimli bir \u015fekilde sunulmas\u0131n\u0131 sa\u011flar, gereksiz regex kontrollerini \u00f6nler.<\/li>\n<li>Benzer \u015fekilde, <code>location ^~ \/assets\/<\/code> blo\u011fu da ayn\u0131 mant\u0131kla \u00e7al\u0131\u015f\u0131r.<\/li>\n<li>E\u011fer bir istek <code>\/static\/<\/code> veya <code>\/assets\/<\/code> ile ba\u015flam\u0131yorsa, Nginx di\u011fer prefix e\u015fle\u015fmelerine ve ard\u0131ndan d\u00fczenli ifade e\u015fle\u015fmelerine bakar. \u00d6rne\u011fin, <code>\/index.php<\/code> iste\u011fi <code>location ~ \\.php$<\/code> blo\u011fu taraf\u0131ndan yakalanacakt\u0131r.<\/li>\n<\/ul>\n<p><code>^~<\/code> kullanmak, Nginx&#8217;in \u00e7al\u0131\u015fma prensibini optimize etmenize olanak tan\u0131r. Statik i\u00e7eri\u011fi dinamik i\u00e7erikten ay\u0131rarak, her ikisi i\u00e7in de en uygun i\u015fleme yolunu belirlersiniz. Bu, sadece performans\u0131 art\u0131rmakla kalmaz, ayn\u0131 zamanda yap\u0131land\u0131rman\u0131z\u0131n daha okunabilir ve y\u00f6netilebilir olmas\u0131na da yard\u0131mc\u0131 olur. Unutmay\u0131n, bu modifikat\u00f6r, Nginx&#8217;in e\u015fle\u015fme algoritmas\u0131n\u0131n ak\u0131\u015f\u0131n\u0131 de\u011fi\u015ftiren g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r ve do\u011fru kullan\u0131ld\u0131\u011f\u0131nda \u00f6nemli faydalar sa\u011flar.<\/p>\n<h2>D\u00fczenli \u0130fadeler (<code class=\"language-\">~<\/code> ve <code class=\"language-\">~*<\/code>) ile Dinamik Y\u00f6nlendirmeler Nas\u0131l Olu\u015fturulur? (Geli\u015fmi\u015f E\u015fle\u015ftirme)<\/h2>\n<p>Nginx&#8217;in konum bloklar\u0131 aras\u0131nda en esnek ve g\u00fc\u00e7l\u00fc e\u015fle\u015ftirme y\u00f6ntemlerinden biri d\u00fczenli ifadelerdir (regular expressions). <code>~<\/code> ve <code>~*<\/code> modifikat\u00f6rleri ile kullan\u0131lan d\u00fczenli ifadeler, URL yollar\u0131ndaki karma\u015f\u0131k desenleri e\u015fle\u015ftirmek, dinamik i\u00e7erikleri y\u00f6nlendirmek, URL&#8217;leri yeniden yazmak (rewrite) ve \u00f6zel i\u015fleme kurallar\u0131 uygulamak i\u00e7in vazge\u00e7ilmezdir. Ancak, bu g\u00fc\u00e7 beraberinde dikkatli bir kullan\u0131m gerektirir, zira yanl\u0131\u015f veya verimsiz yaz\u0131lm\u0131\u015f d\u00fczenli ifadeler performans d\u00fc\u015f\u00fc\u015flerine neden olabilir.<\/p>\n<p><strong><code>~<\/code> (B\u00fcy\u00fck\/K\u00fc\u00e7\u00fck Harf Duyarl\u0131 D\u00fczenli \u0130fade E\u015fle\u015fmesi):<\/strong><\/p>\n<p>Bu modifikat\u00f6r, URL&#8217;yi belirtilen d\u00fczenli ifadeyle b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyarl\u0131 bir \u015fekilde e\u015fle\u015ftirir. \u00d6rne\u011fin, <code>\/image.jpg<\/code> ile <code>\/Image.jpg<\/code> farkl\u0131 kabul edilir. Genellikle dosya uzant\u0131lar\u0131 gibi belirli kal\u0131plar\u0131 e\u015fle\u015ftirmek i\u00e7in kullan\u0131l\u0131r. Nginx, yap\u0131land\u0131rma dosyas\u0131nda ilk tan\u0131mlanan ve e\u015fle\u015fen <code>~<\/code> blo\u011funu se\u00e7er. Bu, d\u00fczenli ifade bloklar\u0131 aras\u0131nda bir \u00f6ncelik s\u0131ras\u0131 oldu\u011fu anlam\u0131na gelir; dosyadaki konumlar\u0131 \u00f6nemlidir.<\/p>\n<p><strong><code>~*<\/code> (B\u00fcy\u00fck\/K\u00fc\u00e7\u00fck Harf Duyars\u0131z D\u00fczenli \u0130fade E\u015fle\u015fmesi):<\/strong><\/p>\n<p><code>~*<\/code> modifikat\u00f6r\u00fc, <code>~<\/code> ile ayn\u0131 i\u015flevi g\u00f6r\u00fcr ancak e\u015fle\u015ftirme s\u0131ras\u0131nda b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf fark\u0131n\u0131 g\u00f6z ard\u0131 eder. Bu, \u00f6zellikle i\u015fletim sistemine veya uygulaman\u0131n URL yap\u0131s\u0131na ba\u011fl\u0131 olarak harf duyarl\u0131l\u0131\u011f\u0131 farkl\u0131l\u0131k g\u00f6sterebilen durumlarda veya kullan\u0131c\u0131lar\u0131n URL&#8217;leri farkl\u0131 \u015fekillerde yazabilece\u011fi senaryolarda kullan\u0131\u015fl\u0131d\u0131r. \u00d6rne\u011fin, <code>\/image.jpg<\/code> ve <code>\/Image.JPG<\/code> ikisi de ayn\u0131 <code>~*<\/code> blo\u011fu taraf\u0131ndan yakalanabilir. T\u0131pk\u0131 <code>~<\/code> gibi, ilk tan\u0131mlanan e\u015fle\u015fen <code>~*<\/code> blo\u011fu se\u00e7ilir.<\/p>\n<p><strong>D\u00fczenli \u0130fade Bloklar\u0131n\u0131n De\u011ferlendirilme S\u0131ras\u0131:<\/strong><\/p>\n<p>Nginx, bir URL iste\u011fini i\u015flerken, tam e\u015fle\u015fmeler (<code>=<\/code>) ve <code>^~<\/code> prefix e\u015fle\u015fmelerinden sonra d\u00fczenli ifade bloklar\u0131na bakar. Birden fazla d\u00fczenli ifade blo\u011fu e\u015fle\u015fiyorsa, Nginx yap\u0131land\u0131rma dosyas\u0131nda ilk tan\u0131mlanan (yani, yukar\u0131dan a\u015fa\u011f\u0131ya do\u011fru ilk kar\u015f\u0131la\u015f\u0131lan) blo\u011fu se\u00e7er. Bu, d\u00fczenli ifade bloklar\u0131n\u0131 belirli bir \u00f6ncelik s\u0131ras\u0131na g\u00f6re d\u00fczenlemeniz gerekti\u011fi anlam\u0131na gelir. Daha spesifik veya \u00f6ncelikli kurallar yukar\u0131da yer almal\u0131d\u0131r.<\/p>\n<p><strong>Pratik Uygulamalar ve Kod \u00d6rnekleri:<\/strong><\/p>\n<pre><code>\nserver {\n    listen 80;\n    server_name example.com;\n\n    # Statik dosyalar i\u00e7in ^~ \u00f6nceli\u011fi (regex aramalar\u0131n\u0131 durdurur)\n    location ^~ \/static\/ {\n        root \/var\/www\/html;\n        expires 30d;\n        add_header Cache-Control \"public, no-transform\";\n    }\n\n    # Resim dosyalar\u0131n\u0131 yakala (b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131z)\n    location ~* \\.(jpg|jpeg|gif|png|webp|svg)$ {\n        root \/var\/www\/html\/images;\n        expires 30d;\n        add_header Cache-Control \"public, no-transform\";\n        # G\u00f6rsel optimizasyon veya CDN y\u00f6nlendirmesi yap\u0131labilir\n    }\n\n    # PHP dosyalar\u0131n\u0131 yakala (b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyarl\u0131)\n    location ~ \\.php$ {\n        include snippets\/fastcgi-php.conf;\n        fastcgi_pass unix:\/var\/run\/php\/php7.4-fpm.sock;\n        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n        fastcgi_split_path_info ^(.+\\.php)(\/.+)$;\n    }\n\n    # Belirli bir API yolunu yakala ve proxy et\n    location ~ ^\/api\/v1\/(users|products)\/[0-9]+$ {\n        proxy_pass http:\/\/backend_api_server;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        # JWT do\u011frulama veya rate limiting eklenebilir\n    }\n\n    # T\u00fcm di\u011fer istekler i\u00e7in varsay\u0131lan blok\n    location \/ {\n        root \/var\/www\/html\/public;\n        index index.html index.htm index.php;\n        try_files $uri $uri\/ \/index.php?$query_string;\n    }\n}\n<\/code><\/pre>\n<p>Yukar\u0131daki \u00f6rnekte:<\/p>\n<ul>\n<li><code>location ^~ \/static\/<\/code> blo\u011fu, statik dosyalar\u0131 regex aramas\u0131 yapmadan sunar. Bu, performans\u0131 art\u0131r\u0131r.<\/li>\n<li><code>location ~* \\.(jpg|jpeg|gif|png|webp|svg)$<\/code> blo\u011fu, herhangi bir b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf kombinasyonuyla biten resim dosyalar\u0131n\u0131 yakalar ve bunlar\u0131 <code>\/var\/www\/html\/images<\/code> dizininden sunar. Bu, medya dosyalar\u0131 i\u00e7in \u00f6zel \u00f6nbellekleme ve ba\u015fl\u0131k ayarlar\u0131 yapman\u0131z\u0131 sa\u011flar.<\/li>\n<li><code>location ~ \\.php$<\/code> blo\u011fu, <code>.php<\/code> ile biten t\u00fcm istekleri PHP-FPM&#8217;ye y\u00f6nlendirir. Bu blok b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyarl\u0131d\u0131r, \u00e7\u00fcnk\u00fc genellikle PHP dosya adlar\u0131 harf duyarl\u0131d\u0131r.<\/li>\n<li><code>location ~ ^\/api\/v1\/(users|products)\/[0-9]+$<\/code> blo\u011fu, belirli bir API yol desenini e\u015fle\u015ftirmek i\u00e7in daha karma\u015f\u0131k bir d\u00fczenli ifade kullan\u0131r. Bu, <code>\/api\/v1\/users\/123<\/code> veya <code>\/api\/v1\/products\/456<\/code> gibi istekleri backend API sunucusuna y\u00f6nlendirir. Regex i\u00e7indeki yakalama gruplar\u0131 (<code>()<\/code>) sayesinde, URL&#8217;nin belirli k\u0131s\u0131mlar\u0131n\u0131 de\u011fi\u015fken olarak kullanmak m\u00fcmk\u00fcnd\u00fcr, bu da dinamik y\u00f6nlendirmeler i\u00e7in \u00e7ok \u00f6nemlidir.<\/li>\n<\/ul>\n<p>D\u00fczenli ifadelerle \u00e7al\u0131\u015f\u0131rken dikkatli olmak \u00f6nemlidir. \u00c7ok geni\u015f veya yanl\u0131\u015f yaz\u0131lm\u0131\u015f bir regex, beklenmedik URL&#8217;leri e\u015fle\u015ftirebilir veya sunucu kaynaklar\u0131n\u0131 gereksiz yere t\u00fcketebilir. D\u00fczenli ifadeleri test etmek i\u00e7in online ara\u00e7lar kullanmak ve yap\u0131land\u0131rma dosyalar\u0131n\u0131z\u0131 de\u011fi\u015ftirdikten sonra Nginx&#8217;i <code>sudo nginx -t<\/code> komutuyla test etmek iyi bir uygulamad\u0131r. Bu sayede olas\u0131 hatalar\u0131n \u00f6n\u00fcne ge\u00e7ebilir ve sunucunuzun istikrarl\u0131 \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayabilirsiniz.<\/p>\n<div class=\"tip\">\n<p>Uzman \u0130pucu: Karma\u015f\u0131k d\u00fczenli ifadeler yerine, m\u00fcmk\u00fcn oldu\u011funca prefix e\u015fle\u015fmelerini (<code>^~<\/code> veya modifiyesiz) tercih edin. D\u00fczenli ifadeler daha fazla CPU t\u00fcketir. E\u011fer regex kullanman\u0131z gerekiyorsa, m\u00fcmk\u00fcn oldu\u011funca spesifik olun ve gereksiz yakalama gruplar\u0131ndan ka\u00e7\u0131n\u0131n.<\/p>\n<\/div>\n<h2>Nginx Konum Blo\u011fu Se\u00e7iminde En \u0130yi Uygulamalar Nelerdir? (Performans ve G\u00fcvenlik \u0130pu\u00e7lar\u0131)<\/h2>\n<p>Nginx konum bloklar\u0131n\u0131 do\u011fru bir \u015fekilde yap\u0131land\u0131rmak, web uygulaman\u0131z\u0131n performans\u0131n\u0131, g\u00fcvenli\u011fini ve bak\u0131m kolayl\u0131\u011f\u0131n\u0131 do\u011frudan etkiler. Bu b\u00f6l\u00fcmde, Nginx yap\u0131land\u0131rmalar\u0131n\u0131z\u0131 optimize etmek i\u00e7in uygulayabilece\u011finiz en iyi y\u00f6ntemleri ve ipu\u00e7lar\u0131n\u0131 ele alaca\u011f\u0131z. Bu uygulamalar, hem yeni ba\u015flayanlar hem de deneyimli y\u00f6neticiler i\u00e7in yol g\u00f6sterici olacakt\u0131r.<\/p>\n<h3>Prioritizasyon Stratejileri ve \u00c7ak\u0131\u015fan Kurallardan Ka\u00e7\u0131nma<\/h3>\n<p>Nginx&#8217;in e\u015fle\u015ftirme algoritmas\u0131n\u0131 anlad\u0131ktan sonra, bloklar\u0131n\u0131z\u0131 bu \u00f6ncelik s\u0131ras\u0131na g\u00f6re d\u00fczenlemek kritik \u00f6nem ta\u015f\u0131r. Genel kural \u015fudur: en spesifik ve en y\u00fcksek \u00f6ncelikli bloklar (<code>=<\/code>) en \u00fcste, ard\u0131ndan <code>^~<\/code> ile ba\u015flayan prefix e\u015fle\u015fmeleri, daha sonra d\u00fczenli ifadeler (<code>~<\/code>, <code>~*<\/code>) ve en son olarak da genel prefix e\u015fle\u015fmeleri (<code>\/<\/code>) gelmelidir. Bu s\u0131ralama, Nginx&#8217;in gereksiz kontroller yapmas\u0131n\u0131 engeller ve do\u011fru blo\u011fun h\u0131zl\u0131ca se\u00e7ilmesini sa\u011flar.<\/p>\n<pre><code>\n# En y\u00fcksek \u00f6ncelik: Tam e\u015fle\u015fmeler\nlocation = \/favicon.ico { ... }\nlocation = \/robots.txt { ... }\nlocation = \/ { ... }\n\n# Regex aramalar\u0131n\u0131 durduran prefix e\u015fle\u015fmeleri (statik i\u00e7erik i\u00e7in ideal)\nlocation ^~ \/static\/ { ... }\nlocation ^~ \/assets\/ { ... }\n\n# D\u00fczenli ifade e\u015fle\u015fmeleri (dosyada yukar\u0131dan a\u015fa\u011f\u0131ya \u00f6ncelik)\nlocation ~ \\.php$ { ... }\nlocation ~* \\.(jpg|jpeg|png|gif)$ { ... }\nlocation ~ ^\/api\/v1\/ { ... }\n\n# En d\u00fc\u015f\u00fck \u00f6ncelik: Genel prefix e\u015fle\u015fmesi (varsay\u0131lan)\nlocation \/ { ... }\n<\/code><\/pre>\n<p>\u00c7ak\u0131\u015fan kurallardan ka\u00e7\u0131nmak i\u00e7in, \u00f6zellikle d\u00fczenli ifadeleri dikkatli yazmal\u0131s\u0131n\u0131z. Bir URL&#8217;nin birden fazla regex blo\u011fuyla e\u015fle\u015fmesi durumunda, Nginx dosyada ilk kar\u015f\u0131la\u015ft\u0131\u011f\u0131 regex blo\u011funu kullan\u0131r. Bu nedenle, daha spesifik regex kurallar\u0131n\u0131 daha genel olanlardan \u00f6nce tan\u0131mlamak \u00f6nemlidir.<\/p>\n<h3><code class=\"language-\">try_files<\/code> Y\u00f6nergesinin Ak\u0131ll\u0131ca Kullan\u0131m\u0131<\/h3>\n<p><code>try_files<\/code> y\u00f6nergesi, Nginx&#8217;in bir iste\u011fi i\u015flerken birden fazla dosya veya dizin varl\u0131\u011f\u0131n\u0131 kontrol etmesini ve buna g\u00f6re yan\u0131t vermesini sa\u011flayan g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Genellikle dinamik uygulamalarda, bir dosya bulunamazsa iste\u011fi ana uygulama giri\u015f noktas\u0131na y\u00f6nlendirmek i\u00e7in kullan\u0131l\u0131r. Bu, \u00f6zellikle URL rewrite i\u015flemleri ve &#8220;temiz URL&#8221; yap\u0131lar\u0131 i\u00e7in vazge\u00e7ilmezdir.<\/p>\n<pre><code>\nlocation \/ {\n    root \/var\/www\/html\/public;\n    index index.html index.htm index.php;\n    # \u00d6nce $uri'yi dosya olarak dene, sonra $uri'yi dizin olarak dene,\n    # e\u011fer ikisi de bulunamazsa \/index.php'ye y\u00f6nlendir\n    try_files $uri $uri\/ \/index.php?$query_string;\n}\n<\/code><\/pre>\n<p>Bu \u00f6rnek, gelen bir iste\u011fin \u00f6nce k\u00f6k dizinde bir dosya olarak aranmas\u0131n\u0131, sonra bir dizin olarak aranmas\u0131n\u0131 ve e\u011fer hi\u00e7biri bulunamazsa iste\u011fi <code>index.php<\/code>&#8216;ye y\u00f6nlendirmesini sa\u011flar. <code>?$query_string<\/code> eklemek, orijinal sorgu parametrelerinin PHP uygulamas\u0131na iletilmesini sa\u011flar.<\/p>\n<h3>G\u00fcvenlik \u0130pu\u00e7lar\u0131 ve Hassas Dosyalar\u0131n Korunmas\u0131<\/h3>\n<p>Nginx konum bloklar\u0131, web uygulaman\u0131z\u0131n g\u00fcvenli\u011finde \u00f6nemli bir rol oynar. Hassas dosyalar\u0131n (\u00f6rne\u011fin, <code>.env<\/code> dosyalar\u0131, veritaban\u0131 yap\u0131land\u0131rmalar\u0131, yedekler) do\u011frudan eri\u015fimini engellemek i\u00e7in \u00f6zel bloklar kullanmal\u0131s\u0131n\u0131z.<\/p>\n<pre><code>\n# Gizli dosyalar\u0131 engelle\nlocation ~ \/\\.ht {\n    deny all;\n}\n\nlocation ~ \/\\.env {\n    deny all;\n}\n\n# Yedekleme dosyalar\u0131n\u0131 engelle\nlocation ~ \\.(bak|sql|zip|tar\\.gz)$ {\n    deny all;\n}\n<\/code><\/pre>\n<p>Bu bloklar, <code>.ht<\/code> ile ba\u015flayan dosyalar\u0131 (Apache <code>.htaccess<\/code> gibi), <code>.env<\/code> dosyalar\u0131n\u0131 ve yayg\u0131n yedekleme dosyas\u0131 uzant\u0131lar\u0131n\u0131 d\u0131\u015far\u0131dan eri\u015fime kapat\u0131r. <code>deny all;<\/code> y\u00f6nergesi, bu dosyalara eri\u015fmeye \u00e7al\u0131\u015fan t\u00fcm isteklere 403 Forbidden yan\u0131t\u0131 d\u00f6nd\u00fcr\u00fcr.<\/p>\n<h3>Mobil Uyumluluk \u0130\u00e7in Nginx Konfig\u00fcrasyonu Nas\u0131l Optimize Edilir?<\/h3>\n<p>Nginx do\u011frudan mobil uyumlu HTML \u00fcretmez veya medya sorgular\u0131n\u0131 i\u015flemez; bu, front-end geli\u015ftirmenin sorumlulu\u011fundad\u0131r. Ancak Nginx, mobil uyumlu deneyimi desteklemek i\u00e7in \u00e7e\u015fitli optimizasyonlar yapabilir:<\/p>\n<ol>\n<li><strong>Kullan\u0131c\u0131 Arac\u0131s\u0131na G\u00f6re Y\u00f6nlendirme (User-Agent Based Routing):<\/strong> Nginx, gelen iste\u011fin <code>User-Agent<\/code> ba\u015fl\u0131\u011f\u0131na bakarak farkl\u0131 cihazlara farkl\u0131 i\u00e7erikler sunabilir. \u00d6rne\u011fin, mobil cihazlar i\u00e7in daha hafif bir s\u00fcr\u00fcm veya farkl\u0131 bir API u\u00e7 noktas\u0131na y\u00f6nlendirme yap\u0131labilir. Ancak bu y\u00f6ntem, kullan\u0131c\u0131 arac\u0131s\u0131 spoofing&#8217;ine kar\u015f\u0131 hassas olabilir ve bak\u0131m\u0131 zorla\u015fabilir.<\/li>\n<li><strong>Optimize Edilmi\u015f Varl\u0131k Sunumu:<\/strong> Nginx, mobil cihazlar i\u00e7in optimize edilmi\u015f resimleri (\u00f6rne\u011fin, WebP format\u0131) veya daha k\u00fc\u00e7\u00fck JavaScript\/CSS dosyalar\u0131n\u0131 sunabilir. Bu, <code>location<\/code> bloklar\u0131 i\u00e7inde <code>User-Agent<\/code> veya <code>Accept<\/code> ba\u015fl\u0131klar\u0131na g\u00f6re dinamik olarak yap\u0131labilir.<\/li>\n<li><strong>\u00d6nbellekleme (Caching):<\/strong> Mobil a\u011f ko\u015fullar\u0131 genellikle daha de\u011fi\u015fkendir. Nginx&#8217;in g\u00fc\u00e7l\u00fc \u00f6nbellekleme mekanizmalar\u0131, mobil kullan\u0131c\u0131lar i\u00e7in i\u00e7eri\u011fin daha h\u0131zl\u0131 y\u00fcklenmesini sa\u011flayabilir. Statik dosyalar i\u00e7in uzun <code>expires<\/code> ba\u015fl\u0131klar\u0131 ve dinamik i\u00e7erik i\u00e7in <code>proxy_cache<\/code> kullan\u0131m\u0131 performans\u0131 art\u0131r\u0131r.<\/li>\n<\/ol>\n<pre><code>\n# Mobil cihazlar i\u00e7in farkl\u0131 bir site k\u00f6k\u00fcne y\u00f6nlendirme (Basit \u00f6rnek, dikkatli kullan\u0131lmal\u0131)\n# if ($http_user_agent ~* \"(android|blackberry|ipad|iphone|ipod|opera mini|palm|psp|series60|symbian|windows ce|mobile)\") {\n#    set $mobile_site_root \"\/var\/www\/html\/mobile\";\n# }\n# else {\n#    set $mobile_site_root \"\/var\/www\/html\/desktop\";\n# }\n# location \/ {\n#    root $mobile_site_root;\n#    index index.html;\n# }\n\n# WebP resimleri i\u00e7in \u00f6rnek (Accept ba\u015fl\u0131\u011f\u0131na g\u00f6re)\nlocation ~* \\.(png|jpg|jpeg)$ {\n    set $webp_suffix \"\";\n    if ($http_accept ~* \"webp\") {\n        set $webp_suffix \".webp\";\n    }\n    try_files $uri$webp_suffix $uri =404;\n    # root ve di\u011fer ayarlar\n    root \/var\/www\/html\/images;\n    expires 30d;\n}\n<\/code><\/pre>\n<p>Yukar\u0131daki WebP \u00f6rne\u011fi, taray\u0131c\u0131n\u0131n WebP format\u0131n\u0131 destekleyip desteklemedi\u011fini kontrol eder ve destekliyorsa <code>.webp<\/code> uzant\u0131l\u0131 dosyay\u0131 sunmaya \u00e7al\u0131\u015f\u0131r. Bu, mobil cihazlarda resimlerin daha h\u0131zl\u0131 y\u00fcklenmesini sa\u011flayabilir. Ancak, <code>if<\/code> y\u00f6nergesinin Nginx&#8217;te karma\u015f\u0131k mant\u0131k i\u00e7in &#8220;k\u00f6t\u00fc al\u0131\u015fkanl\u0131k&#8221; olarak g\u00f6r\u00fcld\u00fc\u011f\u00fcn\u00fc ve basit kullan\u0131mlar d\u0131\u015f\u0131nda dikkatli olunmas\u0131 gerekti\u011fini belirtmekte fayda var.<\/p>\n<p>Nginx, bu gibi stratejilerle mobil uyumlu bir kullan\u0131c\u0131 deneyiminin temelini olu\u015fturabilir. Ancak, ger\u00e7ek mobil uyumluluk genellikle duyarl\u0131 tasar\u0131m (responsive design) ve medya sorgular\u0131 gibi front-end teknikleriyle sa\u011flan\u0131r. Nginx&#8217;in g\u00f6revi, bu tasar\u0131mlar i\u00e7in optimize edilmi\u015f varl\u0131klar\u0131 verimli bir \u015fekilde sunmakt\u0131r.<\/p>\n<pre><code class=\"language-html\">\n&lt;!-- HTML i\u00e7erisinde mobil uyumluluk i\u00e7in medya sorgusu \u00f6rne\u011fi --&gt;\n&lt;style&gt;\n  .container {\n    width: 960px;\n    margin: 0 auto;\n  }\n  @media (max-width: 768px) {\n    .container {\n      width: 100%;\n      padding: 0 15px;\n    }\n    img {\n      max-width: 100%;\n      height: auto;\n    }\n  }\n&lt;\/style&gt;\n&lt;div class=\"container\"&gt;\n  &lt;h1&gt;Mobil Uyumlu \u0130\u00e7erik&lt;\/h1&gt;\n  &lt;p&gt;Bu i\u00e7erik, ekran boyutuna g\u00f6re farkl\u0131 g\u00f6r\u00fcnecektir.&lt;\/p&gt;\n  &lt;img src=\"\/images\/hero.jpg\" alt=\"Responsive Image\"&gt;\n&lt;\/div&gt;\n<\/code><\/pre>\n<p>Nginx, yukar\u0131daki gibi HTML, CSS ve JavaScript dosyalar\u0131n\u0131 mobil cihazlara h\u0131zl\u0131 ve g\u00fcvenli bir \u015fekilde ula\u015ft\u0131rarak, modern web uygulamalar\u0131n\u0131n mobil uyumlu olmalar\u0131na dolayl\u0131 olarak katk\u0131da bulunur.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryosu: Y\u00fcksek Trafikli Bir E-ticaret Sitesi \u0130\u00e7in Nginx Optimizasyonu<\/h2>\n<p>Bir e-ticaret sitesi, y\u00fcksek e\u015fzamanl\u0131 kullan\u0131c\u0131 trafi\u011fi, statik ve dinamik i\u00e7eri\u011fin bir arada sunulmas\u0131, API entegrasyonlar\u0131, \u00f6deme i\u015flemleri ve g\u00fcvenlik gibi bir\u00e7ok karma\u015f\u0131k gereksinimi bar\u0131nd\u0131r\u0131r. Bu senaryoda Nginx&#8217;in konum blo\u011fu se\u00e7im algoritmalar\u0131n\u0131 do\u011fru bir \u015fekilde uygulamak, sitenin h\u0131zl\u0131, g\u00fcvenli ve \u00f6l\u00e7eklenebilir olmas\u0131n\u0131 sa\u011flamak i\u00e7in hayati \u00f6nem ta\u015f\u0131r. Gelin, hayali bir e-ticaret sitesi olan &#8220;ShopMart&#8221; i\u00e7in Nginx yap\u0131land\u0131rmas\u0131n\u0131 nas\u0131l optimize edebilece\u011fimize bakal\u0131m.<\/p>\n<p><strong>Senaryo Detaylar\u0131:<\/strong><\/p>\n<ul>\n<li>ShopMart, PHP tabanl\u0131 bir e-ticaret platformu kullan\u0131yor.<\/li>\n<li>Statik dosyalar (CSS, JS, resimler, fontlar) ayr\u0131 bir CDN&#8217;den veya Nginx \u00fczerinden y\u00fcksek \u00f6nbellekleme ile sunuluyor.<\/li>\n<li>API istekleri (\u00fcr\u00fcn bilgileri, sepet i\u015flemleri) ayr\u0131 bir mikroservis mimarisine y\u00f6nlendiriliyor.<\/li>\n<li>Kullan\u0131c\u0131 oturumlar\u0131 ve hassas veriler i\u00e7in HTTPS zorunlu.<\/li>\n<li>Y\u00f6netim paneli (<code>\/admin\/<\/code>) i\u00e7in ek g\u00fcvenlik \u00f6nlemleri gerekiyor.<\/li>\n<\/ul>\n<pre><code>\nserver {\n    listen 80;\n    server_name shopmart.com www.shopmart.com;\n    # T\u00fcm HTTP isteklerini HTTPS'ye y\u00f6nlendir\n    return 301 https:\/\/$host$request_uri;\n}\n\nserver {\n    listen 443 ssl http2;\n    server_name shopmart.com www.shopmart.com;\n\n    ssl_certificate \/etc\/nginx\/ssl\/shopmart.com.crt;\n    ssl_certificate_key \/etc\/nginx\/ssl\/shopmart.com.key;\n    ssl_session_cache shared:SSL:10m;\n    ssl_session_timeout 10m;\n    ssl_protocols TLSv1.2 TLSv1.3;\n    ssl_ciphers \"ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384\";\n    ssl_prefer_server_ciphers on;\n\n    root \/var\/www\/shopmart\/public;\n    index index.html index.php;\n\n    # 1. Tam E\u015fle\u015fmeler (En Y\u00fcksek \u00d6ncelik)\n    # Favicon ve robots.txt gibi s\u0131k istenen k\u00fc\u00e7\u00fck dosyalar i\u00e7in h\u0131zl\u0131 yan\u0131t\n    location = \/favicon.ico {\n        root \/var\/www\/shopmart\/static;\n        expires 30d;\n        access_log off;\n        log_not_found off;\n    }\n\n    location = \/robots.txt {\n        root \/var\/www\/shopmart\/static;\n        expires 7d;\n        access_log off;\n        log_not_found off;\n    }\n\n    # 2. Regex Aramas\u0131n\u0131 Durduran Prefix E\u015fle\u015fmeleri (Statik \u0130\u00e7erik)\n    # CSS, JS, fontlar gibi statik varl\u0131klar i\u00e7in y\u00fcksek \u00f6nbellekleme ve h\u0131zl\u0131 sunum\n    location ^~ \/assets\/ {\n        alias \/var\/www\/shopmart\/assets\/; # Farkl\u0131 bir dizinden sunum\n        expires 30d;\n        add_header Cache-Control \"public, no-transform\";\n        access_log off;\n        log_not_found off;\n        # MIME tipleri i\u00e7in include mime.types;\n    }\n\n    location ^~ \/uploads\/ {\n        root \/var\/www\/shopmart; # \/var\/www\/shopmart\/uploads\/ yoluna e\u015fle\u015fir\n        expires 30d;\n        add_header Cache-Control \"public, no-transform\";\n        # Kullan\u0131c\u0131 taraf\u0131ndan y\u00fcklenen g\u00f6rseller i\u00e7in\n    }\n\n    # 3. D\u00fczenli \u0130fade E\u015fle\u015fmeleri (Dinamik \u0130\u00e7erik ve API'ler)\n    # PHP uygulamas\u0131 i\u00e7in t\u00fcm .php uzant\u0131l\u0131 istekleri PHP-FPM'ye y\u00f6nlendir\n    location ~ \\.php$ {\n        try_files $uri =404;\n        include snippets\/fastcgi-php.conf;\n        fastcgi_pass unix:\/var\/run\/php\/php7.4-fpm.sock;\n        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n        fastcgi_split_path_info ^(.+\\.php)(\/.+)$;\n    }\n\n    # API isteklerini arka u\u00e7 mikroservisine y\u00f6nlendir\n    location ~ ^\/api\/v1\/(products|cart|users)(.*)$ {\n        proxy_pass http:\/\/shopmart_api_backend$request_uri;\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        # Rate limiting, JWT do\u011frulama gibi ek kurallar buraya eklenebilir\n    }\n\n    # Y\u00f6netim paneli i\u00e7in ek g\u00fcvenlik (IP k\u0131s\u0131tlamas\u0131)\n    location ^~ \/admin\/ {\n        auth_basic \"Admin Panel\";\n        auth_basic_user_file \/etc\/nginx\/.htpasswd; # Kullan\u0131c\u0131 ad\u0131\/\u015fifre do\u011frulama\n        # allow 192.168.1.0\/24; # Sadece belirli bir IP aral\u0131\u011f\u0131ndan eri\u015fime izin ver\n        # deny all; # Di\u011fer t\u00fcm IP'leri engelle\n        proxy_pass http:\/\/shopmart_admin_backend; # Y\u00f6netim paneli ayr\u0131 bir backend'de olabilir\n        proxy_set_header Host $host;\n    }\n\n    # 4. Genel Prefix E\u015fle\u015fmesi (Varsay\u0131lan Davran\u0131\u015f)\n    # Di\u011fer t\u00fcm istekler i\u00e7in, dosyay\u0131 veya dizini ara, yoksa ana PHP giri\u015f noktas\u0131na y\u00f6nlendir\n    location \/ {\n        try_files $uri $uri\/ \/index.php?$query_string;\n    }\n\n    # Gizli dosyalar\u0131n eri\u015fimini engelle\n    location ~ \/\\.ht {\n        deny all;\n    }\n    location ~ \/\\.env {\n        deny all;\n    }\n}\n<\/code><\/pre>\n<p><strong>Bu Yap\u0131land\u0131rman\u0131n Analizi:<\/strong><\/p>\n<ul>\n<li><strong>HTTPS Zorunlulu\u011fu:<\/strong> \u0130lk <code>server<\/code> blo\u011fu, t\u00fcm HTTP isteklerini otomatik olarak HTTPS&#8217;ye y\u00f6nlendirir, bu da e-ticaret sitesi i\u00e7in g\u00fcvenlik standartlar\u0131n\u0131 kar\u015f\u0131lar.<\/li>\n<li><strong>Statik Dosya Optimizasyonu:<\/strong> <code>location = \/favicon.ico<\/code> ve <code>location = \/robots.txt<\/code> ile en s\u0131k istenen k\u00fc\u00e7\u00fck dosyalar h\u0131zla sunulur. <code>location ^~ \/assets\/<\/code> ve <code>location ^~ \/uploads\/<\/code> bloklar\u0131, statik varl\u0131klar\u0131 (CSS, JS, resimler) regex aramas\u0131 yapmadan, y\u00fcksek \u00f6nbellekleme ile sunarak performans\u0131 maksimize eder ve sunucu y\u00fck\u00fcn\u00fc azalt\u0131r. <code>alias<\/code> y\u00f6nergesi, dosya sistemindeki farkl\u0131 bir yoldan sunum yapmaya olanak tan\u0131r.<\/li>\n<li><strong>Dinamik \u0130\u00e7erik ve API Y\u00f6nlendirmesi:<\/strong> <code>location ~ \\.php$<\/code> blo\u011fu, PHP uygulamas\u0131 i\u00e7in dinamik istekleri PHP-FPM&#8217;ye y\u00f6nlendirir. <code>location ~ ^\/api\/v1\/(products|cart|users)(.*)$<\/code> blo\u011fu, d\u00fczenli ifade kullanarak belirli API u\u00e7 noktalar\u0131n\u0131 yakalar ve bunlar\u0131 ayr\u0131 bir mikroservis backend&#8217;ine (<code>shopmart_api_backend<\/code>) y\u00f6nlendirir. Bu, uygulama mimarisinin mod\u00fclerli\u011fini ve \u00f6l\u00e7eklenebilirli\u011fini destekler.<\/li>\n<li><strong>Y\u00f6netim Paneli G\u00fcvenli\u011fi:<\/strong> <code>location ^~ \/admin\/<\/code> blo\u011fu, y\u00f6netim paneli eri\u015fimi i\u00e7in ek g\u00fcvenlik katmanlar\u0131 ekler. <code>auth_basic<\/code> ile temel HTTP kimlik do\u011frulamas\u0131 ve IP k\u0131s\u0131tlamalar\u0131 (yorum sat\u0131r\u0131nda) uygulanabilir. Bu, hassas y\u00f6netim aray\u00fcz\u00fcn\u00fc yetkisiz eri\u015fimden korur.<\/li>\n<li><strong>Genel Varsay\u0131lan Davran\u0131\u015f:<\/strong> <code>location \/<\/code> blo\u011fu, yukar\u0131daki spesifik kurallarla e\u015fle\u015fmeyen t\u00fcm di\u011fer istekler i\u00e7in varsay\u0131lan davran\u0131\u015f\u0131 tan\u0131mlar. <code>try_files<\/code> y\u00f6nergesi, URL rewrite i\u015flemlerini ele alarak temiz URL&#8217;lerin \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<\/li>\n<li><strong>Gizli Dosya Korumas\u0131:<\/strong> <code>location ~ \/\\.ht<\/code> ve <code>location ~ \/\\.env<\/code> gibi bloklar, sunucudaki hassas yap\u0131land\u0131rma dosyalar\u0131n\u0131n ve \u00e7evre de\u011fi\u015fkenlerinin d\u0131\u015far\u0131dan eri\u015fimini engeller.<\/li>\n<\/ul>\n<p>Bu yap\u0131land\u0131rma, Nginx&#8217;in konum blo\u011fu se\u00e7im algoritmalar\u0131n\u0131 bilin\u00e7li bir \u015fekilde kullanarak, bir e-ticaret sitesinin karma\u015f\u0131k ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131layan, y\u00fcksek performansl\u0131 ve g\u00fcvenli bir altyap\u0131 olu\u015fturman\u0131n bir \u00f6rne\u011fidir. Her blok, belirli bir amaca hizmet eder ve Nginx&#8217;in e\u015fle\u015ftirme \u00f6nceli\u011fi g\u00f6z \u00f6n\u00fcnde bulundurularak dikkatlice yerle\u015ftirilmi\u015ftir. Bu sayede ShopMart, yo\u011fun trafik alt\u0131nda bile sorunsuz bir al\u0131\u015fveri\u015f deneyimi sunabilir.<\/p>\n<h2>Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>Nginx&#8217;in konum blo\u011fu se\u00e7im algoritmalar\u0131n\u0131 anlamak ve do\u011fru bir \u015fekilde uygulamak, web sunucusu y\u00f6netiminde uzmanla\u015fman\u0131n temel ta\u015flar\u0131ndan biridir. Bu makalede, Nginx&#8217;in gelen istekleri nas\u0131l i\u015fledi\u011fini, tam e\u015fle\u015fme (<code>=<\/code>), prefix e\u015fle\u015fmeleri (<code>^~<\/code> ve modifiyesiz) ve d\u00fczenli ifadeler (<code>~<\/code>, <code>~*<\/code>) aras\u0131ndaki \u00f6ncelik farklar\u0131n\u0131 detayl\u0131ca inceledik. Ayr\u0131ca, performans optimizasyonu, g\u00fcvenlik ve ger\u00e7ek d\u00fcnya senaryolar\u0131 \u00fczerinden en iyi uygulamalar\u0131 ele ald\u0131k. Do\u011fru yap\u0131land\u0131r\u0131lm\u0131\u015f konum bloklar\u0131 sayesinde, sunucunuzun performans\u0131n\u0131 art\u0131rabilir, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapatabilir ve web uygulaman\u0131z\u0131n daha \u00f6l\u00e7eklenebilir olmas\u0131n\u0131 sa\u011flayabilirsiniz.<\/p>\n<p>Unutmay\u0131n ki Nginx yap\u0131land\u0131rmas\u0131 s\u00fcrekli bir optimizasyon s\u00fcrecidir. Uygulaman\u0131z\u0131n gereksinimleri de\u011fi\u015ftik\u00e7e, Nginx yap\u0131land\u0131rman\u0131z\u0131 da g\u00f6zden ge\u00e7irmeli ve g\u00fcncellemeler yapmal\u0131s\u0131n\u0131z. Karma\u015f\u0131k d\u00fczenli ifadelerden ka\u00e7\u0131nmak, statik dosyalar i\u00e7in <code>^~<\/code> kullanmak ve hassas dosyalar\u0131 korumak gibi temel prensiplere ba\u011fl\u0131 kalmak, uzun vadede size b\u00fcy\u00fck faydalar sa\u011flayacakt\u0131r.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p><strong>1. Nginx&#8217;te birden fazla <code>location<\/code> blo\u011fu e\u015fle\u015firse hangisi kazan\u0131r?<\/strong><\/p>\n<p>Nginx, e\u015fle\u015fme t\u00fcr\u00fcne g\u00f6re belirli bir \u00f6ncelik s\u0131ras\u0131 izler: \u00f6nce tam e\u015fle\u015fmeler (<code>=<\/code>), sonra regex aramalar\u0131n\u0131 durduran prefix e\u015fle\u015fmeleri (<code>^~<\/code>), ard\u0131ndan d\u00fczenli ifade e\u015fle\u015fmeleri (<code>~<\/code>, <code>~*<\/code>) ve son olarak da en uzun modifiyesiz prefix e\u015fle\u015fmesi. D\u00fczenli ifade bloklar\u0131 aras\u0131nda, yap\u0131land\u0131rma dosyas\u0131nda ilk tan\u0131mlanan (yani yukar\u0131dan a\u015fa\u011f\u0131ya ilk kar\u015f\u0131la\u015f\u0131lan) e\u015fle\u015fen blok kazan\u0131r.<\/p>\n<p><strong>2. <code>if<\/code> y\u00f6nergesini Nginx&#8217;te kullanmak neden genellikle \u00f6nerilmez?<\/strong><\/p>\n<p><code>if<\/code> y\u00f6nergesi, Nginx&#8217;in yap\u0131land\u0131rma dilinde &#8220;k\u00f6t\u00fc al\u0131\u015fkanl\u0131k&#8221; olarak kabul edilir ve genellikle ka\u00e7\u0131n\u0131lmas\u0131 \u00f6nerilir. Bunun nedeni, <code>if<\/code>&#8216;in Nginx&#8217;in i\u00e7 i\u015fleyi\u015fiyle (\u00f6zellikle rewrite mod\u00fcl\u00fcyle) \u00e7ak\u0131\u015farak beklenmedik davran\u0131\u015flara veya hatalara yol a\u00e7abilmesidir. \u00c7o\u011fu durumda, <code>if<\/code> yerine <code>try_files<\/code>, <code>map<\/code> mod\u00fcl\u00fc veya daha spesifik <code>location<\/code> bloklar\u0131 gibi daha g\u00fcvenli ve \u00f6ng\u00f6r\u00fclebilir alternatifler mevcuttur.<\/p>\n<p><strong>3. Nginx yap\u0131land\u0131rmam\u0131 test etmek i\u00e7in hangi komutu kullanmal\u0131y\u0131m?<\/strong><\/p>\n<p>Nginx yap\u0131land\u0131rma dosyan\u0131zda de\u011fi\u015fiklik yapt\u0131ktan sonra, yeni yap\u0131land\u0131rman\u0131n s\u00f6zdizimsel olarak do\u011fru olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in <code>sudo nginx -t<\/code> komutunu kullanmal\u0131s\u0131n\u0131z. Bu komut, Nginx&#8217;i yeniden ba\u015flatmadan \u00f6nce olas\u0131 hatalar\u0131 tespit etmenizi sa\u011flar. E\u011fer test ba\u015far\u0131l\u0131 olursa, Nginx&#8217;i <code>sudo systemctl reload nginx<\/code> veya <code>sudo service nginx reload<\/code> komutuyla yeniden y\u00fckleyebilirsiniz.<\/p>\n<p><strong>4. Statik dosyalar\u0131m\u0131 Nginx \u00fczerinden sunarken performans\u0131 nas\u0131l art\u0131rabilirim?<\/strong><\/p>\n<p>Statik dosyalar i\u00e7in performans\u0131 art\u0131rman\u0131n birka\u00e7 yolu vard\u0131r:<\/p>\n<ul>\n<li><code>location ^~ \/static\/<\/code> gibi <code>^~<\/code> prefix e\u015fle\u015fmeleri kullanarak Nginx&#8217;in gereksiz regex aramalar\u0131n\u0131 durdurmas\u0131n\u0131 sa\u011flay\u0131n.<\/li>\n<li><code>expires<\/code> y\u00f6nergesi ile uzun taray\u0131c\u0131 \u00f6nbellekleme s\u00fcreleri belirleyin (\u00f6rn: <code>expires 30d;<\/code>).<\/li>\n<li><code>gzip on;<\/code> y\u00f6nergesi ile s\u0131k\u0131\u015ft\u0131rmay\u0131 etkinle\u015ftirin.<\/li>\n<li><code>access_log off;<\/code> ve <code>log_not_found off;<\/code> kullanarak gereksiz g\u00fcnl\u00fck kayd\u0131n\u0131 kapat\u0131n.<\/li>\n<li>M\u00fcmk\u00fcnse, statik dosyalar\u0131 bir CDN (\u0130\u00e7erik Da\u011f\u0131t\u0131m A\u011f\u0131) \u00fczerinden sunun.<\/li>\n<\/ul>\n<p><strong>5. Nginx&#8217;te bir URL&#8217;yi ba\u015fka bir URL&#8217;ye kal\u0131c\u0131 olarak nas\u0131l y\u00f6nlendirebilirim?<\/strong><\/p>\n<p>Bir URL&#8217;yi kal\u0131c\u0131 olarak (HTTP 301) y\u00f6nlendirmek i\u00e7in <code>return 301<\/code> y\u00f6nergesini kullanabilirsiniz. \u00d6rne\u011fin:<\/p>\n<pre><code>\nlocation \/old-path\/ {\n    return 301 \/new-path\/;\n}\n<\/code><\/pre>\n<p>Bu, <code>\/old-path\/<\/code> ile ba\u015flayan t\u00fcm istekleri <code>\/new-path\/<\/code> adresine kal\u0131c\u0131 olarak y\u00f6nlendirecektir. Daha karma\u015f\u0131k y\u00f6nlendirmeler i\u00e7in d\u00fczenli ifadelerle birlikte <code>rewrite<\/code> y\u00f6nergesini de kullanabilirsiniz, ancak <code>return<\/code> daha basit ve performansl\u0131d\u0131r.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Nginx Sunucu ve Konum Blo\u011fu Se\u00e7im Algoritmalar\u0131: Derinlemesine Bir Bak\u0131\u015f Web uygulamalar\u0131n\u0131z\u0131n performans\u0131 ve g\u00fcvenli\u011fi, sunucu yap\u0131land\u0131rman\u0131zla do\u011frudan&hellip;","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-36152","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 Nedir ve Konum Bloklar\u0131 Neden Bu Kadar \u00d6nemli? (Giri\u015f ve Temel Kavramlar)<\/title>\n<meta name=\"description\" content=\"Web uygulamalar\u0131n\u0131z\u0131n performans\u0131 ve g\u00fcvenli\u011fi, sunucu yap\u0131land\u0131rman\u0131zla do\u011frudan ili\u015fkilidir. \u00d6zellikle y\u00fcksek trafikli sitelerde, Nginx gibi g\u00fc\u00e7l\u00fc bir web sunucusunun do\u011fru yap\u0131land\u0131r\u0131lmas\u0131 hayati \u00f6nem ta\u015f\u0131r. Peki, Nginx gelen bir iste\u011fi hangi location blo\u011funa y\u00f6nlendirece\u011fine nas\u0131l karar verir? Bu karma\u015f\u0131k se\u00e7im algoritmas\u0131n\u0131 anlamak, sitenizin h\u0131z\u0131n\u0131 art\u0131rmak, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapatmak ve bak\u0131m s\u00fcre\u00e7lerini kolayla\u015ft\u0131rmak i\u00e7in kritik bir ad\u0131md\u0131r. Bu makale, Nginx&#039;in konum blo\u011fu se\u00e7im mekanizmalar\u0131n\u0131 derinlemesine inceleyerek, bu s\u00fcre\u00e7teki gizem perdesini aralayacak ve size pratik uygulamalarla yol g\u00f6sterecek.\" \/>\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-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nginx Nedir ve Konum Bloklar\u0131 Neden Bu Kadar \u00d6nemli? (Giri\u015f ve Temel Kavramlar)\" \/>\n<meta property=\"og:description\" content=\"Web uygulamalar\u0131n\u0131z\u0131n performans\u0131 ve g\u00fcvenli\u011fi, sunucu yap\u0131land\u0131rman\u0131zla do\u011frudan ili\u015fkilidir. \u00d6zellikle y\u00fcksek trafikli sitelerde, Nginx gibi g\u00fc\u00e7l\u00fc bir web sunucusunun do\u011fru yap\u0131land\u0131r\u0131lmas\u0131 hayati \u00f6nem ta\u015f\u0131r. Peki, Nginx gelen bir iste\u011fi hangi location blo\u011funa y\u00f6nlendirece\u011fine nas\u0131l karar verir? Bu karma\u015f\u0131k se\u00e7im algoritmas\u0131n\u0131 anlamak, sitenizin h\u0131z\u0131n\u0131 art\u0131rmak, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapatmak ve bak\u0131m s\u00fcre\u00e7lerini kolayla\u015ft\u0131rmak i\u00e7in kritik bir ad\u0131md\u0131r. Bu makale, Nginx&#039;in konum blo\u011fu se\u00e7im mekanizmalar\u0131n\u0131 derinlemesine inceleyerek, bu s\u00fcre\u00e7teki gizem perdesini aralayacak ve size pratik uygulamalarla yol g\u00f6sterecek.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-09T05:21:10+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=\"30 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Nginx Nedir ve Konum Bloklar\u0131 Neden Bu Kadar \u00d6nemli? (Giri\u015f ve Temel Kavramlar)\",\"datePublished\":\"2025-12-09T05:21:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/\"},\"wordCount\":4613,\"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-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/\",\"name\":\"Nginx Nedir ve Konum Bloklar\u0131 Neden Bu Kadar \u00d6nemli? (Giri\u015f ve Temel Kavramlar)\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-09T05:21:10+00:00\",\"description\":\"Web uygulamalar\u0131n\u0131z\u0131n performans\u0131 ve g\u00fcvenli\u011fi, sunucu yap\u0131land\u0131rman\u0131zla do\u011frudan ili\u015fkilidir. \u00d6zellikle y\u00fcksek trafikli sitelerde, Nginx gibi g\u00fc\u00e7l\u00fc bir web sunucusunun do\u011fru yap\u0131land\u0131r\u0131lmas\u0131 hayati \u00f6nem ta\u015f\u0131r. Peki, Nginx gelen bir iste\u011fi hangi location blo\u011funa y\u00f6nlendirece\u011fine nas\u0131l karar verir? Bu karma\u015f\u0131k se\u00e7im algoritmas\u0131n\u0131 anlamak, sitenizin h\u0131z\u0131n\u0131 art\u0131rmak, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapatmak ve bak\u0131m s\u00fcre\u00e7lerini kolayla\u015ft\u0131rmak i\u00e7in kritik bir ad\u0131md\u0131r. Bu makale, Nginx'in konum blo\u011fu se\u00e7im mekanizmalar\u0131n\u0131 derinlemesine inceleyerek, bu s\u00fcre\u00e7teki gizem perdesini aralayacak ve size pratik uygulamalarla yol g\u00f6sterecek.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Nginx Nedir ve Konum Bloklar\u0131 Neden Bu Kadar \u00d6nemli? (Giri\u015f ve Temel Kavramlar)\"}]},{\"@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 Nedir ve Konum Bloklar\u0131 Neden Bu Kadar \u00d6nemli? (Giri\u015f ve Temel Kavramlar)","description":"Web uygulamalar\u0131n\u0131z\u0131n performans\u0131 ve g\u00fcvenli\u011fi, sunucu yap\u0131land\u0131rman\u0131zla do\u011frudan ili\u015fkilidir. \u00d6zellikle y\u00fcksek trafikli sitelerde, Nginx gibi g\u00fc\u00e7l\u00fc bir web sunucusunun do\u011fru yap\u0131land\u0131r\u0131lmas\u0131 hayati \u00f6nem ta\u015f\u0131r. Peki, Nginx gelen bir iste\u011fi hangi location blo\u011funa y\u00f6nlendirece\u011fine nas\u0131l karar verir? Bu karma\u015f\u0131k se\u00e7im algoritmas\u0131n\u0131 anlamak, sitenizin h\u0131z\u0131n\u0131 art\u0131rmak, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapatmak ve bak\u0131m s\u00fcre\u00e7lerini kolayla\u015ft\u0131rmak i\u00e7in kritik bir ad\u0131md\u0131r. Bu makale, Nginx'in konum blo\u011fu se\u00e7im mekanizmalar\u0131n\u0131 derinlemesine inceleyerek, bu s\u00fcre\u00e7teki gizem perdesini aralayacak ve size pratik uygulamalarla yol g\u00f6sterecek.","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-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/","og_locale":"tr_TR","og_type":"article","og_title":"Nginx Nedir ve Konum Bloklar\u0131 Neden Bu Kadar \u00d6nemli? (Giri\u015f ve Temel Kavramlar)","og_description":"Web uygulamalar\u0131n\u0131z\u0131n performans\u0131 ve g\u00fcvenli\u011fi, sunucu yap\u0131land\u0131rman\u0131zla do\u011frudan ili\u015fkilidir. \u00d6zellikle y\u00fcksek trafikli sitelerde, Nginx gibi g\u00fc\u00e7l\u00fc bir web sunucusunun do\u011fru yap\u0131land\u0131r\u0131lmas\u0131 hayati \u00f6nem ta\u015f\u0131r. Peki, Nginx gelen bir iste\u011fi hangi location blo\u011funa y\u00f6nlendirece\u011fine nas\u0131l karar verir? Bu karma\u015f\u0131k se\u00e7im algoritmas\u0131n\u0131 anlamak, sitenizin h\u0131z\u0131n\u0131 art\u0131rmak, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapatmak ve bak\u0131m s\u00fcre\u00e7lerini kolayla\u015ft\u0131rmak i\u00e7in kritik bir ad\u0131md\u0131r. Bu makale, Nginx'in konum blo\u011fu se\u00e7im mekanizmalar\u0131n\u0131 derinlemesine inceleyerek, bu s\u00fcre\u00e7teki gizem perdesini aralayacak ve size pratik uygulamalarla yol g\u00f6sterecek.","og_url":"https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-09T05:21:10+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"30 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Nginx Nedir ve Konum Bloklar\u0131 Neden Bu Kadar \u00d6nemli? (Giri\u015f ve Temel Kavramlar)","datePublished":"2025-12-09T05:21:10+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/"},"wordCount":4613,"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-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/","url":"https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/","name":"Nginx Nedir ve Konum Bloklar\u0131 Neden Bu Kadar \u00d6nemli? (Giri\u015f ve Temel Kavramlar)","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-09T05:21:10+00:00","description":"Web uygulamalar\u0131n\u0131z\u0131n performans\u0131 ve g\u00fcvenli\u011fi, sunucu yap\u0131land\u0131rman\u0131zla do\u011frudan ili\u015fkilidir. \u00d6zellikle y\u00fcksek trafikli sitelerde, Nginx gibi g\u00fc\u00e7l\u00fc bir web sunucusunun do\u011fru yap\u0131land\u0131r\u0131lmas\u0131 hayati \u00f6nem ta\u015f\u0131r. Peki, Nginx gelen bir iste\u011fi hangi location blo\u011funa y\u00f6nlendirece\u011fine nas\u0131l karar verir? Bu karma\u015f\u0131k se\u00e7im algoritmas\u0131n\u0131 anlamak, sitenizin h\u0131z\u0131n\u0131 art\u0131rmak, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 kapatmak ve bak\u0131m s\u00fcre\u00e7lerini kolayla\u015ft\u0131rmak i\u00e7in kritik bir ad\u0131md\u0131r. Bu makale, Nginx'in konum blo\u011fu se\u00e7im mekanizmalar\u0131n\u0131 derinlemesine inceleyerek, bu s\u00fcre\u00e7teki gizem perdesini aralayacak ve size pratik uygulamalarla yol g\u00f6sterecek.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/nginx-nedir-ve-konum-bloklari-neden-bu-kadar-onemli-giris-ve-temel-kavramlar\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Nginx Nedir ve Konum Bloklar\u0131 Neden Bu Kadar \u00d6nemli? (Giri\u015f ve Temel Kavramlar)"}]},{"@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\/36152","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=36152"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/36152\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=36152"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=36152"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=36152"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}