Nginx Yönlendirme Nedir?
Nginx, web sunucusu ve ters proxy sunucusu olarak yaygın şekilde kullanılan bir yazılımdır. Yönlendirme, bir URL’ye gelen isteği başka bir URL’ye yönlendirme işlemini ifade eder. Yönlendirme işlemleri, ziyaretçilerin doğru içeriğe ulaşmasını sağlamak ve SEO (Arama Motoru Optimizasyonu) gereksinimlerini karşılamak amacıyla kullanılır. Nginx, yönlendirme işlemleri için `rewrite` ve `return` direktiflerini destekler.
Rewrite Direktifi
`rewrite` direktifi, URL’leri yeniden yazmak için kullanılır. Belirli bir URI ile eşleşen istekler, başka bir URI’ye yönlendirilir. Bu direktif, Nginx konfigürasyon dosyasında `server` veya `location` blokları içerisinde tanımlanabilir. `rewrite` direktifinin temel sözdizimi şu şekildedir:
“`
rewrite regex replacement [flag];
“`
Regex, eşleştirilecek olan URL desenini belirtirken, replacement kısmı yeni URL’yi tanımlar. Flag ise isteğe bağlıdır ve yönlendirme davranışını kontrol eder.
Örneğin, aşağıdaki yapılandırma, `/old-path` URL’sini `/new-path` URL’sine yönlendirmek için kullanılabilir:
“`nginx
server {
listen 80;
server_name example.com;
location /old-path {
rewrite ^/old-path$ /new-path permanent;
}
}
“`
Bu örnekte, `^/old-path$` düzenli ifadesi, tam olarak `/old-path` olan URL’leri eşleştirir. `/new-path` ifadesi, istek geldiğinde yönlendirilmesi istenen yeni URL’dir. “permanent” flag’i, 301 (kalıcı) yönlendirmesi yapıldığını belirtir.
Return Direktifi
`return` direktifi, belirli bir isteğe hızlı bir şekilde yanıt vermek için kullanılır. Bu direktif, genellikle basit yönlendirmeler için tercih edilir ve URL’leri yeniden yazmaktan daha basit bir yapı sunar. `return` direktifinin temel sözdizimi şu şekildedir:
“`
return code url;
“`
Burada, `code` HTTP durum kodunu belirtirken, `url` yönlendirilmek istenen yeni URL’yi tanımlar.
Örneğin, `/old-path` URL’sine gelen talepleri `/new-path` URL’sine yönlendirmek için şu yapılandırma kullanılabilir:
“`nginx
server {
listen 80;
server_name example.com;
location /old-path {
return 301 /new-path;
}
}
“`
Bu örnekte, herhangi bir istek `/old-path` URL’sine yapıldığında, yanıt olarak 301 (kalıcı) yönlendirmesi ile `/new-path` URL’sine yönlendirilir.
Rewrite ve Return Karşılaştırması
`rewrite` ve `return` direktifleri arasındaki temel fark, işlevsellik düzeyidir. `rewrite`, daha karmaşık yönlendirme kuralları ve düzenli ifadelerle kullanıma olanak tanırken, `return` direktifi basit yönlendirmeler için daha hızlı ve anlaşılır bir yöntem sağlar. `rewrite`, bir dizi yönlendirmeyi aynı anda işlemek için kullanılabilirken, `return` tek bir yönlendirme için yeterli olabilir.
Yönlendirme Türleri
Nginx’te yönlendirmeler genellikle iki kategoriye ayrılır: geçici (302) ve kalıcı (301) yönlendirmeler. Kalıcı yönlendirmeler, arama motorlarına içeriğin kalıcı olarak yeni bir URL’ye taşındığını bildirirken, geçici yönlendirmeler, içeriğin geçici bir süre için başka bir URL’de bulunduğunu belirtir.
Daha fazla detay vermek gerekirse, 301 yönlendirmesi genellikle SEO açısından tercih edilen yöntemdir çünkü bu tür yönlendirmeler arama motorları tarafından kalıcı olarak dikkate alınır. 302 yönlendirmesi ise içeriğin geçici olarak başka bir konumda bulunduğunu belirtir ve genelde kullanıcı deneyimini iyileştirmek amacıyla uygulanır.
Gelişmiş Yönlendirme Kullanım Senaryoları
Nginx yönlendirme ayarlarında, karmaşık senaryolar oluşturmak için birden fazla `rewrite` kuralı kullanılabilir. Örneğin, birden fazla eski URL’nin tek bir yeni URL’ye yönlendirilmesi gerekiyorsa, birden fazla `rewrite` direktifi tanımlanabilir.
“`nginx
server {
listen 80;
server_name example.com;
location /old-path1 {
rewrite ^/old-path1$ /new-path permanent;
}
location /old-path2 {
rewrite ^/old-path2$ /new-path permanent;
}
}
“`
Bu yapılandırma ile `/old-path1` ve `/old-path2` URL’lerine gelen talepler her iki durumda da `/new-path` URL’sine yönlendirilir.
Sonuç
Nginx üzerinde yönlendirme işlemleri, `rewrite` ve `return` direktifleri ile oldukça esnek bir şekilde gerçekleştirilebilmektedir. Her iki direktifin kullanımı, belirli senaryolar için avantaj sağlayacak biçimde seçilmelidir. Yönlendirme yapılandırmaları, kullanıcı deneyimi ve arama motoru optimizasyonu açısından önem taşır, bu nedenle doğru yöntemlerin kullanılması önerilir.