使用 .htpasswd 密码保护 Nginx 文件夹中的文件
Password protecting files in a folder in Nginx using .htpasswd
我正在尝试使用 .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/ 之后的所有内容都应该无法访问。
你的正则表达式语法几乎不错,你实际上必须混合你所做的两个尝试:
location "~^/admin/.*" {
try_files $uri $uri/ =404;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
这是因为在正则表达式语法中,.
表示任意字符(单个),而*
表示前面"something"的任意数量(可以为零)。将两者混合 (.*
) 将意味着任意数量的任意字符。
这是正则表达式的基础知识之一,所以我建议您多了解一些。 Learning Regular Expressions 包含有关您的后续步骤的指南。它还包含有关处理换行符时 .
通配符的一些限制的说明,尽管这不适用于 URL。
我正在尝试使用 .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/ 之后的所有内容都应该无法访问。
你的正则表达式语法几乎不错,你实际上必须混合你所做的两个尝试:
location "~^/admin/.*" {
try_files $uri $uri/ =404;
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
}
这是因为在正则表达式语法中,.
表示任意字符(单个),而*
表示前面"something"的任意数量(可以为零)。将两者混合 (.*
) 将意味着任意数量的任意字符。
这是正则表达式的基础知识之一,所以我建议您多了解一些。 Learning Regular Expressions 包含有关您的后续步骤的指南。它还包含有关处理换行符时 .
通配符的一些限制的说明,尽管这不适用于 URL。