如何为除某个文件以外的所有内容启用HTTP Basic Auth ?
这是我当前的位置服务器块配置:
location / {
auth_basic "The password, you must enter.";
auth_basic_user_file /etc/nginx/htpasswd;
}
location /README {
auth_basic off;
}
Run Code Online (Sandbox Code Playgroud)
但是,/README它仍然提示输入密码.
我们该如何解决这个问题?
谢谢!标记
Ser*_*kov 34
尝试使用sign =,这可以帮助您:
location = /README {
auth_basic off;
allow all; # Allow all to see content
}
Run Code Online (Sandbox Code Playgroud)
小智 7
我正在做类似的事情使用"map"而不是"if"来分配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;
}
Run Code Online (Sandbox Code Playgroud)