Apache Nginx की try_files के बराबर है?


12

Nginx में try_files, एक विन्यास निर्देश है कि "क्रम में फ़ाइलों के अस्तित्व के लिए जाँच करता है, और जो पहली फ़ाइल मिली है उसे लौटाता है"। मुझे ऐसा करना बहुत साफ लगता है

location ~* \.(gif|jpe?g|css|js)$ {
    try_files $uri 404;
}

जो वेब फ्रेमवर्क को परेशान किए बिना सीधे स्थिर फ़ाइलों की सेवा करने का एक सुरक्षित तरीका है। मैं अपाचे में एक ही काम कैसे कर सकता हूं?


1
आप किस उपाय के लिए गए थे? चयनित उत्तर वास्तव में मेरे उपयोग के मामले को पूरा नहीं करता है।
panepeter

जवाबों:


9

मैं आमतौर पर इसे mod_rewrite के साथ देखता हूं:

 RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
 RewriteRule ^/(.*)$ balancer://app_cluster%{REQUEST_URI} [P,QSA,L]

इसका अर्थ है "यदि फ़ाइल फ़ाइल सिस्टम पर मौजूद नहीं है, तो इसे मेरे mod_proxy_balancer क्लस्टर के माध्यम से प्रॉक्सी करें।" अन्यथा, यदि फ़ाइल फ़ाइल सिस्टम पर मौजूद है, तो यह बस अपाचे द्वारा DocumentRootआपके वर्चुअलाइजहोस्ट में परिभाषित के सापेक्ष दिया जाता है ।

लेकिन यह मेरा पसंदीदा तरीका नहीं है, ज्यादातर इसलिए कि इसे statअनुरोध के अनुसार सिस्टम कॉल की आवश्यकता होगी ।

Mod_proxy के साथ, आप उपयोग कर सकते हैं ProxyPassMatchयदि आपके पास Apache का नया पर्याप्त संस्करण है ( प्रलेखन देखें )। जैसे कि:

ProxyPassMatch \.(gif|jpe?g|css|js)$ !

जो उपयोग करता है! इंगित करने के लिए अपाचे को उस नियमित अभिव्यक्ति से मेल खाते प्रॉक्सी अनुरोध नहीं करना चाहिए ।

यदि आप Apache के पुराने संस्करण का उपयोग कर रहे हैं, तो आपके पास ProxyPassनिर्देश उपलब्ध होगा , लेकिन यह केवल URI उपसर्गों से मेल खाता है (यह मेरी वर्तमान पसंदीदा विधि है):

ProxyPass /images !
ProxyPass /stylesheets !

बेशक, अगर आपको ऊपर बताए अनुसार नियमित रूप से अभिव्यक्ति मिलान करना चाहिए, तो आप केवल उस mod_rewrite नियम को संशोधित कर सकते हैं जिसे मैंने शीर्ष पर पोस्ट किया था जिसके खिलाफ मैच को नकारना था %{REQUEST_URI}

उम्मीद है की वो मदद करदे!


2
मुझे लगता है कि "खराब" तरीका अधिक समान है try_files, क्योंकि यह फ़ाइल के अस्तित्व की जांच करता है। हालांकि ऐसा करने का कोई तरीका नहीं प्रतीत होता है ProxyPass
फुनेहे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.