我试图限制对除主页“/”之外的所有内容的访问。
我的意思是:允许人们访问 example.com 但限制使用密码访问任何其他路径:example.com/任何其他路径。
我尝试了正则表达式与位置指令的多种组合,但没有成功:
location ~ /\.+ {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
location ~ /.+ {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
location ~ /. {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
还有一些其他的,但我要么限制对所有人(example.com 和 example.com/*)的访问,要么不限制对任何内容的访问。
答案1
您需要匹配路径中没有目录的文件并允许访问,然后匹配其他所有内容并要求身份验证。例如
location ~ ^/[^/]*$ {<no auth directives>}
location ~ ^/.+/.*$ {<some auth directives>}