एक बहुत ही आम try_files रेखा है जो अपनी हालत पर लागू किया जा सकता
location/{
try_files $uri $uri/ /test/index.html;
}
आप शायद समझ में पहले भाग, location /
मैचों है:
यहाँ defualt.conf के संबंधित भाग है सभी स्थानों, जब तक कि यह अधिक विशिष्ट स्थान से मेल नहीं खाता है, उदाहरण के लिए location /test
उदाहरण के लिए
दूसरा भाग (try_files
) का मतलब है कि जब आप इस ब्लॉक से मेल खाते हैं तो यूआरआई प्राप्त होता है, उदाहरण के लिए $uri
उदाहरण के लिए, उदाहरण के लिए http://example.com/images/image.jpg
nginx /images
image.jpg
नामक फ़ाइल को जांचने का प्रयास करेगा, यदि यह पाया जाता है कि यह पहले इसकी सेवा करेगा।
दूसरी शर्त $uri/
अगर आप पहली शर्त $uri
एक निर्देशिका के रूप में यूआरआई कोशिश, उदाहरण के http://example.com/images/
के लिए नहीं मिला, ngixn पहले अगर एक फ़ाइल बुलाया images
मौजूद है तो यह अभ्यस्त इसे खोजने की जाँच करेगा जिसका अर्थ है है, तो को जाता है दूसरा चेक $uri/
और देखें कि images
नामक निर्देशिका है तो यह इसकी सेवा करने का प्रयास करेगी।
साइड नोट: अगर आप की जरूरत नहीं है autoindex on
आप शायद, एक 403 निषिद्ध त्रुटि मिलेगी क्योंकि निर्देशिका सूची डिफ़ॉल्ट से मना किया है।
संपादित: मुझे लगता है कि अगर आप index
परिभाषित किया गया है, nginx अगर सूचकांक से पहले इस फ़ोल्डर के अंदर मौजूद है निर्देशिका लिस्टिंग की कोशिश कर जाँच करने की कोशिश करेंगे उल्लेख करना भूल गया।
तीसरी शर्त /test/index.html
गिरावट वापस विकल्प माना जाता है, के लिए, आप उपयोग कर सकते हैं के रूप में आप (कभी नहीं एक कसना की पहले पढ़ने के लिए) कर सकते हैं (आप कम से कम 2 विकल्प, एक और वापस गिरावट उपयोग करने की आवश्यकता) के रूप में ज्यादा , nginx फ़ाइल index.html
फ़ाइल test
के अंदर फ़ाइल की तलाश करेगा और यदि यह मौजूद है तो इसे सेवा दें।
यदि तीसरी स्थिति भी विफल हो जाती है, तो nginx 404 त्रुटि पृष्ठ की सेवा करेगा।
इसके अलावा वहाँ कुछ नामित स्थानों कहा जाता है, की तरह इस
location @error {
}
आप इस
try_files $uri $uri/ @error;
टिप तरह try_files
से कॉल करने की कर सकते हैं: आप केवल 1 हालत आप सेवा करना चाहते है, तो उदाहरण के लिए उदाहरण images
के अंदर आप केवल छवि की सेवा करना चाहते हैं या 404 त्रुटि पर जाना चाहते हैं, तो आप इस
012 जैसी लाइन लिख सकते हैं
location /images {
try_files $uri =404;
}
जिसका मतलब है या तो फ़ाइल की सेवा या एक 404 त्रुटि की सेवा, आप केवल $uri
यह स्वयं के द्वारा =404
बिना उपयोग नहीं कर सकते, क्योंकि आप एक fallback विकल्प की आवश्यकता है।
location /images {
try_files $uri =403;
}
यदि छवि मौजूद नहीं है यह एक वर्जित त्रुटि दिखाई देगा, या यह सर्वर त्रुटि, आदि दिखा देंगे अगर आप 500 का उपयोग करें:
तुम भी तरह उदाहरण के लिए जो कभी त्रुटि कोड आप चाहते हैं, का चयन कर सकते ..
'try_files' लाइन में पिछली '/' का मतलब क्या था? –
मतलब फ़ॉलबैक विकल्प एक "/" है। ";" से पहले चरित्र सही उस रेखा में। – Jonah
अच्छी तरह से इसे एक फ़ाइल होने की आवश्यकता है, न कि यूआरआई, इसलिए $ uri/या उपयोग /index.html –