我有以下 nginx 位置块:
location /publish/domain.io.php {
allow 127.0.0.1;
deny all;
}
location ~\.php {
try_files $uri =404;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
fastcgi_pass 127.0.0.1:9000;
include /etc/nginx/fastcgi_params;
}
问题是位置块/publish/domain.io.php
似乎没有执行。我可以domain.io.php
从任何主机调用 php 脚本。
有想法吗?非常感谢。
答案1
使用=
位置前缀来确定精确匹配。正如所写nginx 文档:“如果找到完全匹配,则搜索终止。”
因此,您的位置应如下所示:
位置 = /publish/domain.io.php { 允许 127.0.0.1; 全部拒绝;# 给出 403 }
或者
位置 = /publish/domain.io.php { 内部;# 给出 404 }