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ı, root–alias 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ör | Eşleşme Türü | Öncelik |
|---|---|---|
= | Tam eşleşme | En yüksek |
^~ | Prefix eşleşme (regex durdurur) | Yüksek |
~ | Regex (harf duyarlı) | Orta |
~* | Regex (harf duyarsız) | Orta |
| (yok) | Standart prefix | En 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:
- Tam eşleşme (
=) kontrol edilir - En uzun prefix bulunur
- Eğer
^~varsa süreç burada biter
- Eğer
- Regex blokları, dosyadaki yazım sırasına göre çalıştırılır
- 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.