nginx:

2012-02-14 34 views
16

nasıl belli dosyası için haricinde her şey için HTTP Temel Auth etkinleştirebilirsiniz belirli bir konuma hariç her şey için auth_basic?nginx:

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

location /README { 
     auth_basic off; 
} 

Ancak /README üzerine, hala bir parola isteyen bir:

İşte konumu için benim geçerli sunucu blok yapılandırmasıdır.

Bunu nasıl düzeltebiliriz?

Teşekkürler! size yardımcı olur işareti = kullanmaya Mark

cevap

33

deneyin:

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

olan 'hepsine izin ver 'gerçekten gerekli? Bu varsayılan davranış değil mi? – Joost

+0

Gerekli değil. – KittMedia

+0

Downvoted - burada tam bir eşleşmenin neden gerekli olduğunu açıklayın. – Xaser

7

: Burada detaylı cevap

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