nginx 位置正则表达式匹配除主页之外的所有内容

nginx 位置正则表达式匹配除主页之外的所有内容

我试图限制对除主页“/”之外的所有内容的访问。

我的意思是:允许人们访问 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>}

相关内容