Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
Nginx’te root, istenen URL yolunu belirtilen dizinin sonuna ekler. alias ise location içinde eşleşen URL bölümünü belirtilen dosya sistemi yolu ile değiştirir. Bu nedenle normal site kökü için genellikle root, belirli bir URL yolunu başka bir fiziksel dizine bağlamak için ise alias kullanılır.

Nasıl çalışırlar?​


Aşağıdaki iki yapılandırma farklı dosya yolları üretir:

Kod:
location / {
    root /srv/www/site;
}

location /assets/ {
    alias /srv/www/assets/;
}

İlk blokta /index.html isteği şu dosyaya çevrilir:

/srv/www/site/index.html

İkinci blokta /assets/logo.svg isteği şu dosyaya çevrilir:

/srv/www/assets/logo.svg

Yani root URL yolunu kök dizinin altına ekler. alias ise /assets/ bölümünü kaldırıp yerine /srv/www/assets/ yolunu koyar.

Bu fark özellikle yüklenen dosyalar, statik varlıklar ve başka bir dizinde tutulan doğrulama dosyalarında önemlidir. alias kullanırken URL’deki location önekinin ve hedef dizinin sondaki eğik çizgilerini tutarlı yazmak hataları azaltır.

Yalıtılmış deneme yapılandırması​


Aşağıdaki varsayımda ana site /srv/www/site, görseller ise /srv/www/assets altında bulunur:

Kod:
server {
    listen 80;
    server_name example.com;

    location / {
        root /srv/www/site;
        index index.html;
    }

    location /assets/ {
        alias /srv/www/assets/;
    }
}

Her iki tablo satırında location /media/ ve istek /media/logo.svg varsayılır:

YapılandırmaOluşan dosya yoluUygun kullanım
root /srv/www/site;/srv/www/site/media/logo.svgSite içindeki normal yollar
alias /srv/www/assets/;/srv/www/assets/logo.svgURL yolunu ayrı dizine bağlamak


Bu yollar yalnız kendi yalıtılmış laboratuvarınız için örnektir. Önceden var olan site dosyalarının üzerine yazmayın. Örnek yapılandırma, iki dizinin önceden hazırlanmasını; site altında index.html, assets altında logo.svg bulunmasını varsayar. Nginx kullanıcısı dosyaları okuyabilmeli ve üst dizinlerden geçebilmelidir. Geniş izin vermek yerine gerçek sahiplik ve gerekli izinleri kontrol edin.

example.com temsilidir; komutları internetteki bu alan adına göndermeyin. Kendi test sunucunuza çözümlenen yetkili deneme adını server_name ve curl adreslerinde tutarlı kullanın.

Yapılandırma dosyanızı etkin Nginx yapılandırmasına ekledikten sonra şu sırayı izleyin:

  1. Yapılandırma sözdizimini denetleyin: sudo nginx -t. Komut başarılı dönmüyorsa yeniden yükleme yapmayın; hata mesajındaki dosya ve satır numarasını düzeltin.
  2. Yapılandırmayı yeniden yükleyin: sudo systemctl reload nginx. Bu komut sisteminizde Nginx’in systemd hizmeti olarak çalıştığını varsayar.
  3. İki yolu ayrı ayrı test edin: curl -i http://example.com/ ve curl -i http://example.com/assets/logo.svg. Dosyalar doğru yerdeyse başarılı HTTP yanıtı ve ilgili içerik görülmelidir.
  4. Varlık isteği başarısızsa önce gerçek dosya yolunu kontrol edin: /assets/logo.svg isteği için dosya /srv/www/assets/logo.svg olmalıdır. Dosyayı /srv/www/assets/assets/logo.svg altında aramak, root mantığını yanlışlıkla alias için uyguladığınızı gösterir.

Hangi durumda hangisini seçmeli?​


Site dosyalarının tamamı tek bir kök dizinin altındaysa root daha anlaşılır seçimdir. Örneğin /blog/post.html isteğinin /srv/www/site/blog/post.html dosyasına gitmesini istiyorsanız root /srv/www/site; kullanın.

URL’deki bir bölümü bağımsız bir dizine yönlendirmek istiyorsanız alias kullanın. Örneğin /downloads/ adresini /srv/files/ dizinine bağlamak için location /downloads/ { alias /srv/files/; } yazılabilir.

Sık yapılan hatalar​


Alias hedefinde sondaki eğik çizgiyi unutmak​


location /assets/ ile alias /srv/www/assets/; biçimindeki eşleşme en açık kullanımdır. Eğik çizgileri rastgele değiştirmek, özellikle alt yollar ve yeniden yazma kuralları devreye girdiğinde beklenmeyen dosya yollarına yol açabilir.

Alias yerine root kullanmak​


location /assets/ { root /srv/www/assets; } yazılırsa Nginx, /assets/logo.svg isteğini genellikle /srv/www/assets/assets/logo.svg olarak arar. Hedefte fazladan assets oluşmasını istemiyorsanız alias kullanın veya root dizinini buna göre belirleyin.

Regex location içinde alias eşleşmesini varsaymak​


Düzenli ifade kullanan location bloklarında hangi URL bölümünün hedef yola taşındığı açık olmayabilir; alias tam dosya yolunu tanımlar; yolun regex yakalamalarını kullanması genellikle gerekir. Basit bir dizin eşlemesi için önce önek tabanlı location /assets/ kullanın. Daha karmaşık bir regex gerekli değilse yalnızca kısa olduğu için tercih etmeyin.

Sık sorulan sorular​

Dosya doğru yerdeyken neden başka location çalışıyor?​

Location seçimi yalnız dosyanın bulunduğu dizine göre yapılmaz. Önek ve düzenli ifade bloklarının seçim kuralları geçerlidir; uygun bir regex statik yol örneğini devralabilir. Etkin yapılandırmayı ve tam istek yolunu inceleyin. Kural eklemek yerine önce hangi bloğun seçildiğini belirleyin.

Doğru eşleme dosyayı otomatik olarak güvenli yapar mı?​

Hayır. root ve alias erişim kontrolü değildir. Yalnız yayımlanması gereken dosyaları hedefleyin; gizli yapılandırma, özel yüklemeler ve sembolik bağlantı hedeflerinin erişimini ayrıca değerlendirin. URL ile yolun eşleşmesi, Nginx’in dosyayı okuyabilmesi ve istemcinin onu görmeye yetkili olması ayrı koşullardır.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic