使用.htpasswd密码保护Nginx中文件夹中的文件

我正在尝试使用.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。