2012-02-14 15 views
16

मैं किसी निश्चित फ़ाइल के लिए को छोड़कर सब कुछ के लिए HTTP बेसिक एथ को कैसे सक्षम कर सकता हूं?nginx: किसी विशिष्ट स्थान को छोड़कर सब कुछ के लिए auth_basic

location/{ 
     auth_basic "The password, you must enter."; 
     auth_basic_user_file /etc/nginx/htpasswd; 
} 

location /README { 
     auth_basic off; 
} 

हालांकि, /README पर, यह अभी भी पासवर्ड के लिए उत्साह है:

यहाँ स्थान के लिए मेरे वर्तमान सर्वर ब्लॉक विन्यास है।

हम इसे कैसे ठीक कर सकते हैं?

धन्यवाद! मार्क

उत्तर

33

है कि आप में मदद करता है पर हस्ताक्षर = इस्तेमाल करने की कोशिश,:

location = /README { 
     auth_basic off; 
     allow all; # Allow all to see content 
} 
+4

है 'सभी की अनुमति देते हैं वास्तव में जरूरी है? क्या यह डिफ़ॉल्ट व्यवहार नहीं है? – Joost

+0

यह आवश्यक नहीं है। – KittMedia

+0

डाउनवॉटेड - समझाएं कि यहां एक पूर्ण मैच क्यों जरूरी है। – Xaser

7

मैं कुछ इसी तरह "अगर" auth_basic दायरे चर और htpasswd फ़ाइल आवंटित करने के लिए "मानचित्र" के बजाय का उपयोग कर कर रहा हूँ: यहाँ एक विस्तृत जवाब है

map $http_host $siteenv { 
    default  dev; 

    ~^(?<subdomain>.+)\.dev dev; 
    ~^(?<subdomain>.+)\.devprofile devprofile; 
    ~^(?<subdomain>.+)\.devdebug devdebug; 
    ~^(?<subdomain>.+)\.test test; 
    ~^(?<subdomain>.+)\.demo demo; 
    ~^(?<subdomain>.+)\.stage stage; 

    # Live 
    ~^(?<subdomain>.+)\.live live; 
    ~^.*\.(?P<subdomain>.+)\.[a-zA-Z]* live; 
} 

map $http_host $auth_type { 
    default  "Restricted"; 

    ~^(?<subdomain>.+)\.dev "Development"; 
    ~^(?<subdomain>.+)\.devprofile "Development"; 
    ~^(?<subdomain>.+)\.devdebug "Development"; 
    ~^(?<subdomain>.+)\.test "Testing"; 
    ~^(?<subdomain>.+)\.stage "Stage"; 
    ~^(?<subdomain>.+)\.demo "Demo"; 

    # Live 
    ~^(?<subdomain>.+)\.live "off"; 
    ~^.*\.(?P<subdomain>.+)\.[a-zA-Z]* "off"; 
} 

server { 
    .. etc .. 

    auth_basic   $auth_type; 
    auth_basic_user_file /etc/nginx/conf.d/htpasswd-$siteenv; 
} 
संबंधित मुद्दे