Try_files yönergesinde geri dönüş olarak adlandırılmış konum


1

Nginx'te kafamı yönlendirme işleminin etrafına sarmakta sorun yaşıyorum.

server {
    listen 80;
    listen [::]:80;
    server_name my_domain;

    root /var/www/ep;

    index index.html;

    error_page 403 404 /my403.html;

    location /images/ {
            try_files $uri @not_found;
    }

    location @not_found {
            root /var/www/ep/not_found;
            try_files NON_EXISTENT_1 /not_found.jpg;
    }
}

Yukarıdaki yapılandırma için, http: //my_domain/images/xyz.png veya http: // my_domain / images / adresini ziyaret ettiğimde@not_found bir görüntüyü döndüren yer direktifinin yer almasını bekliyorum /var/www/ep/not_found/not_found.jpgancak bir şekilde /var/www/ep/not_found.jpgyol deneniyor (bu mevcut değil). Bu /my403.htmldosya görüntüleme ile sonuçlanır .

Adlandırılmış konum yaklaşımı ( @not_found) kullanmak istiyorum .

Biri burada neler olduğunu açıklayabilir mi?

Neden /var/www/ep/not_found/not_found.jpgservis edilmiyor?

Yanıtlar:


0

İfadenin /not_found.jpgsonuna yerleştirirsiniz; try_filesbu, URI terimini ifade eder; bu , isteği işlemek için nginxyeni bir arama yapacak anlamına gelir location. Bunu yapmak gerekir değil örneğin son:

try_files /not_found.jpg =404;

Daha fazla bilgi için bu belgeye bakın .


Bir isme alternatif olarak locationşunları kullanabilirsiniz:

location /images/ {
        try_files $uri /not_found.jpg;
}
location = /not_found.jpg {
    root /var/www/ep/not_found;
}

Ayrıntılar için bu belgeye bakın.


Yanıt verdiğiniz için teşekkürler Richard. Bu adlandırılmış konum yaklaşımını deniyorum (soruyu görünür hale getirmek için güncelledim), "bir şekilde çalışmasını sağlamak" yerine. Öğreniyorum, hızlı düzeltmeyi tercih etmiyorum.
lilly
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.