Nginx 密码保护目录不适用于更深层次的链接
Nginx password protected directory not working for deeper links
我有一个受 Nginx 密码保护的目录,如果您转到 mydomain.com/protected_folder/,它就可以正常工作。但是,如果我转到 mydomain.com/protected_folder/index.php 页面加载正常......但它不应该。
如何设置我的位置块以完全阻止通过受保护目录的所有访问?
我的街区:
location /protected_folder {
try_files $uri $uri/ =404;
auth_basic "Protected Folder Login";
auth_basic_user_file /etc/nginx/my_pass;
}
作为旁注。当我用密码保护整个站点时,这不是问题。
问题是.php
个文件没有被这个位置块处理。它们由 location ~ \.php$
.
等位置块处理
如果您使用 ^~
修饰符,您将强制此位置块具有比正则表达式位置块更高的优先级。有关详细信息,请参阅 this document。
这当然会阻止 //mydomain.com/protected_folder/index.php
正确执行。要更正此问题,您将需要一个嵌套的 location ~ \.php$
块来处理 /protected_folder
.
下的 .php
文件
例如:
root /path/to/root;
location ^~ /protected_folder {
try_files $uri $uri/ =404;
auth_basic "Protected Folder Login";
auth_basic_user_file /etc/nginx/my_pass;
location ~ \.php$ {
...
}
}
location ~ \.php$ {
...
}
嵌套的 location ~ \.php$
块是 server
块中现有 location ~ \.php$
块的副本。
我有一个受 Nginx 密码保护的目录,如果您转到 mydomain.com/protected_folder/,它就可以正常工作。但是,如果我转到 mydomain.com/protected_folder/index.php 页面加载正常......但它不应该。
如何设置我的位置块以完全阻止通过受保护目录的所有访问?
我的街区:
location /protected_folder {
try_files $uri $uri/ =404;
auth_basic "Protected Folder Login";
auth_basic_user_file /etc/nginx/my_pass;
}
作为旁注。当我用密码保护整个站点时,这不是问题。
问题是.php
个文件没有被这个位置块处理。它们由 location ~ \.php$
.
如果您使用 ^~
修饰符,您将强制此位置块具有比正则表达式位置块更高的优先级。有关详细信息,请参阅 this document。
这当然会阻止 //mydomain.com/protected_folder/index.php
正确执行。要更正此问题,您将需要一个嵌套的 location ~ \.php$
块来处理 /protected_folder
.
.php
文件
例如:
root /path/to/root;
location ^~ /protected_folder {
try_files $uri $uri/ =404;
auth_basic "Protected Folder Login";
auth_basic_user_file /etc/nginx/my_pass;
location ~ \.php$ {
...
}
}
location ~ \.php$ {
...
}
嵌套的 location ~ \.php$
块是 server
块中现有 location ~ \.php$
块的副本。