Nginx 执行多个位置块

Jus*_*tin 2 nginx

我有以下 nginxlocation块:

location ^~ /publish {
  allow 127.0.0.1;

  #Allow home
  allow 99.100.101.102;

  deny all;
}
Run Code Online (Sandbox Code Playgroud)

然后这个location块在处理 PHP 之后:

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;
}
Run Code Online (Sandbox Code Playgroud)

问题是/publishlikeexecute.php中的文件没有被 fastcgi PHP 处理器处理,它们只是在从 CURL 调用时输出纯 PHP 代码。/publish如果文件以 .php 结尾,我如何强制执行块中定义的安全规则,但仍然执行 PHP 块?

Sha*_*den 5

nginx 只location对一个请求应用一个块。

include如果您想在块之间共享指令,请使用,或者如果您想将多个使用 PHP 的块指向单个 PHP 处理,则使用try_files指向一个@php位置。locationlocation