限制对除一个文件之外的所有文件的访问的最简单方法是什么,其中整个域通过 FastCGI 提供服务?
使用下面的 conf 时出现的问题是,我无法访问 /dir(系统在某种循环中要求我输入密码,正确的登录名+密码不允许我进入)。
此外,相同的 fastCGI 配置在 location = /unrestricted_file.php 和 location ~ .php$ 中重复。
结构为:
server {
location = /unrestricted_file.php {
# FastCGI conf...
break;
}
location / {
root
index
auth_basic "Restricted";
auth_basic_user_file file;
}
location /dir {
auth_basic "Restricted";
auth_basic_user_file file;
}
location ~ \.php$ {
auth_basic "Restricted";
auth_basic_user_file file;
# fastcgi_pass...
}
}
答案1
您可以使用 关闭某个位置的身份验证auth_basic off
。这会将您的配置文件缩短为如下内容:(未经测试)
server {
auth_basic "Restricted";
auth_basic_user_file file;
location = /unrestricted_file.php {
auth_basic off;
# fastcgi_pass...
}
location / {
root
index
}
location ~ \.php$ {
# fastcgi_pass...
}
}
“循环”源自于 auth/dir
被指定了两次(/
和/dir
)。为了放大这一点,尝试将文本更改为"Restricted path /"
和"Restricted path /dir"
,您的循环应该会交替显示这两条消息。