如何在nginx位置块中设置一个PHP-FPMvariables?

出于某种原因,我们的网站有一个.jsphp文件需要交给PHP-FPM。

但是,访问将被拒绝,因为默认情况下,PHP-FPM只允许扩展.php

这可以通过将以下内容添加到php-fpm.conf来解决

 security.limit_extensions = .php .jsphp 

但是我只想为Nginxconfiguration中的特定服务器位置执行此操作,如下所示

 location ~ (\.php|\.jsphp)$ { try_files $uri = 404; include /usr/local/etc/nginx/fastcgi_params; fastcgi_pass 127.0.0.1:9001; # 9000 for xdebug fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PHP_VALUE "error_log=/usr/local/var/log/our-website.local-error.log"; } 

是否可以添加每个服务器位置的PHP-FPM设置security.limit_extensions ? 如果是这样,我该怎么做?

谢谢!

我不认为有可能做到你所要求的。 PHP-FPMconfiguration文件不支持其中的dynamicvariables – 所有configuration一次到一个设定值,然后PHP-FPM池创build这些值设置。

但是,有几种方法可以解决您的问题。

  1. 创build一个新的PHP-FPM池,让它在不同的套接字上监听。

    即在你的php-fpm.conf文件中复制现有的池,将它正在监听的套接字更改为9002,然后更改security.limit_extensions的值,使其仅用于该池。 然后在你的nginxconfiguration文件中有一个.jsphp扩展名被发送到新的池。

  2. 将文件重命名为.js.php,它是(imho)链接扩展types的更好方法,因为它允许代码编辑器知道它是一个PHP文件,而无需在每个编辑器中设置自定义扩展。
    然后它有一个标准的PHP扩展,你不需要担心单独的configuration。