我正在尝试使用.htpasswd来保护我的域上的/ admin /部分。
我能够使用此configuration成功保护根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密码auth出现,但你可以简单地取消它,仍然查看页面。
在做了一些研究之后,我尝试使用正则expression式通配符失败。
不起作用:
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; }
我怎样才能密码保护根索引,以及任何子文件夹和文件? 一切过去/pipe理/应该是无法访问。
你的正则表达式语法几乎是好的,你实际上必须混合你所做的两个尝试:
location "~^/admin/.*" { try_files $uri $uri/ =404; auth_basic "Restricted"; auth_basic_user_file /etc/nginx/.htpasswd; }
这是因为在正则表达式语法.
指任何字符(单个), *
表示前一个“某事”的任何数量(可以是零)。 混合两个( .*
)将意味着任何字符的任何数量。
这是正则表达式的基础之一,所以我建议你多学习一些。 学习正则表达式包含关于您的下一步可能的指南。 它还包含一些有关限制的说明.
在处理换行符时使用通配符,尽管这不适用于URL。