Ana içeriğe geç

Nginx Location Yapılandırması: Tam Eşleşme, Regex ve Proxy Ayarları

Bu Rehberde Ne Öğreneceksiniz?

Bu rehber, Nginx’in gelen HTTP isteklerini hangi location bloğunun işleyeceğini nasıl belirlediğini açıklar.
Amaç, yanlış yönlendirmeleri önlemek ve performanslı yapılandırmalar oluşturmaktır.


Teknik Özet

Bu içerik, Nginx location directive mantığını ve eşleşme önceliklerini ele alır.
Regex kullanımı, rootalias farkı ve proxy_pass ile ters vekil senaryoları açıklanır.


Location Operatörleri ve Anlamları

Nginx, eşleşme davranışını belirlemek için farklı operatörler kullanır:

OperatörEşleşme TürüÖncelik
=Tam eşleşmeEn yüksek
^~Prefix eşleşme (regex durdurur)Yüksek
~Regex (harf duyarlı)Orta
~*Regex (harf duyarsız)Orta
(yok)Standart prefixEn düşük

Doğru operatör seçimi, hem hız hem güvenlik açısından kritiktir.


Nginx Eşleşme Algoritması

Nginx bir istek aldığında şu sırayı izler:

  1. Tam eşleşme (=) kontrol edilir
  2. En uzun prefix bulunur
    • Eğer ^~ varsa süreç burada biter
  3. Regex blokları, dosyadaki yazım sırasına göre çalıştırılır
  4. Regex eşleşmezse, prefix bloğuna geri dönülür

Bu mekanizma öngörülebilir yönlendirme sağlar.


root ve alias Arasındaki Fark

root Kullanımı

location /img/ {
root /var/www;
}
/img/logo.png → /var/www/img/logo.png

alias Kullanımı


location /img/ {
alias /var/www/photos/;
}
/img/logo.png → /var/www/photos/logo.png

⚠️ alias kullanırken sondaki / zorunludur, aksi halde 404 oluşur.

proxy_pass ile Reverse Proxy


location /api/ {
proxy_pass http://127.0.0.1:8000/;
proxy_set_header Host $host;
}
  • Bu yapı API isteklerini backend uygulamaya iletir. Sondaki /, /api yolunun backend’e gönderilmesini engeller.

Uygulamalı Location Örnekleri


# Tam eşleşme – sağlık kontrolü
location = /health {
return 200 "OK";
}

Statik dosyalar – regex engellenir

location ^~ /static/ {
root /var/www/rabisu;
}

Backend yönlendirme

location /api/ {
proxy_pass http://127.0.0.1:8000/;
}
  • Bu yapı üretim ortamlarında yaygın olarak kullanılır.

Sıkça Sorulan Sorular

1. Regex sırası neden önemli? Regex’te dosyada ilk yazılan eşleşme kazanır.

2. ^~ ne zaman kullanılmalı? Prefix’in regex tarafından ezilmesini istemediğinizde.

3. Değişikliği canlıya almadan nasıl test ederim? sudo nginx -t komutunu çalıştırın.

4. Dosya var ama 404 alıyorum, neden? Genelde root–alias karışıklığı veya izin sorunudur.


Sonuç

Doğru bir location hiyerarşisi, Nginx performansını ve güvenliğini doğrudan etkiler. Yapılandırmalarınızı test ederek ve sade tutarak hataları önleyebilirsiniz.

Bu ayarları Rabisu Bulut altyapısında güvenle uygulayabilirsiniz.