我想拒绝访问某个特定文件夹(以及其中的所有文件),但我希望服务器内部的 php 文件可以访问该文件夹(及其文件)。这可能吗?这是我尝试的,但没有成功:
location /folder/ {
allow 1.2.3.4; # my server IP
deny all;
return 404;
}
答案1
您在 nginx 配置中设置的 ACL 适用于将由 nginx 提供的 http 请求。如果 PHP 想要访问其他文件,则不受 nginx 配置的限制。但是,PHP 可能会受到其自身配置的限制。
由于您想将一些安全性转移到 PHP,我想指出的是,PHP 可能有权访问配置文件等。因此,您应该确保不允许这样的代码向攻击者提供任何有用的信息:
http://my.server.acme.org/images.php?file=../../../etc/passwd
答案2
事实上,这对我有用:
location ~ folder/ {
allow 1.2.3.4; #server IP
deny all;
}