Nginx 位置阻止特定文件

Nginx 位置阻止特定文件

我有以下 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
}

相关内容