Try_files निर्देश में कमबैक के रूप में नामित स्थान


1

मुझे समस्या हो रही है कि मैं अपना सिर Nginx में राउटिंग प्रसंस्करण के आसपास लपेटूं।

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;
    }
}

उपरोक्त कॉन्फिगरेशन के लिए, जब मैं http: //my_domain/images/xyz.png या http: // my_domain / images / पर जाता हूं, तो मुझे उम्मीद है कि @not_foundलोकेशन डायरेक्शन से एक इमेज लौटाने की जगह लेगी /var/www/ep/not_found/not_found.jpg(यह मौजूद है) लेकिन किसी तरह से /var/www/ep/not_found.jpgरास्ते की कोशिश की जा रही है (यह) मौजूद नहीं है)। यह /my403.htmlफ़ाइल प्रदर्शित करने में परिणाम है ।

मैं नामित स्थान दृष्टिकोण ( @not_found) का उपयोग करना चाहता हूं ।

क्या कोई समझा सकता है कि यहाँ क्या हो रहा है?

क्यों /var/www/ep/not_found/not_found.jpgनहीं परोसा जाता?

जवाबों:


0

आप बयान /not_found.jpgके अंत में जगह try_filesदेते हैं, जो इसे यूआरआई शब्द बनाता है, जिसका अर्थ है अनुरोध को संसाधित करने के nginxलिए एक नया locationखोजेगा। आपको इसे अंतिम नहीं बनाना चाहिए , उदाहरण के लिए:

try_files /not_found.jpg =404;

इस दस्तावेज़ को और देखें ।


नाम के विकल्प के रूप में location, आप उपयोग कर सकते हैं:

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

देखें इस दस्तावेज़ जानकारी के लिए।


जवाब देने के लिए धन्यवाद रिचर्ड। मैं इस नामित स्थान दृष्टिकोण की कोशिश कर रहा हूं (मैंने इसे दिखाई देने के लिए प्रश्न को अद्यतन किया) "इसके बजाय किसी तरह काम करें"। मैं सीख रहा हूं, मैं जल्दी ठीक नहीं करना चाहता।
लिली
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.