我尝试使用.htpasswd来保护我的域名上的/ admin /部分。
我能够使用此配置成功保护根index.php文件:
location /admin/ {
try_files $uri $uri/ =404;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
但该文件夹中的相关文件仍可查看。例如,在http://domain.com/admin/whatever.php - 页面加载,然后出现Nginx密码身份验证,但您可以简单地取消它并仍然查看该页面。
经过一些研究后,我尝试使用regex wildcards失败。
location "~^/admin/.$" {
try_files $uri $uri/ =404;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
location "~^/admin/*\$" {
try_files $uri $uri/ =404;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
如何密码保护根索引以及任何子文件夹和文件?过去/ admin /的所有内容都应该无法访问。
答案 0 :(得分:5)
你的正则表达式语法几乎是好的,你实际上必须混合你所做的两次尝试:
location "~^/admin/.*" {
try_files $uri $uri/ =404;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
这是因为在正则表达式中,语法.
表示任何字符(单个),*
表示先前“某事”的任何数量(可以为零)。混合两个(.*
)将意味着任何数量的任何字符。
这是正则表达式的基础之一,所以我建议你多了解一下它们。 Learning Regular Expressions包含有关您接下来的步骤的指南。它还包含有关处理换行符时.
通配符的一些限制的注释,但这不适用于URL。