![nginx 位置正则表达式匹配除主页之外的所有内容](https://linux22.com/image/646417/nginx%20%E4%BD%8D%E7%BD%AE%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8C%B9%E9%85%8D%E9%99%A4%E4%B8%BB%E9%A1%B5%E4%B9%8B%E5%A4%96%E7%9A%84%E6%89%80%E6%9C%89%E5%86%85%E5%AE%B9.png)
我试图限制对除主页“/”之外的所有内容的访问。
我的意思是:允许人们访问 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>}