由于某种原因,我们的网站有一个.jsphp
文件需要交给 PHP-FPM。
但是,访问将被拒绝,因为默认情况下 PHP-FPM 仅允许 扩展.php
。
可以通过将以下内容添加到来解决php-fpm.conf
security.limit_extensions = .php .jsphp
但我只想针对 Nginx 配置中的特定服务器位置执行此操作,如下所示
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
?如果可以,我该怎么做?
谢谢!
答案1
我认为不可能完全满足您的要求。PHP-FPM 配置文件不支持动态变量 - 所有内容都配置为一个设定值,然后使用这些值创建 PHP-FPM 池。
不过,有几种方法可以解决您的问题。
创建一个新的 PHP-FPM 池并让它在不同的套接字上监听。
即复制 php-fpm.conf 文件中的现有池,将其监听的套接字更改为 9002,并
security.limit_extensions
仅更改该池的值。然后在 nginx 配置中将扩展名为 .jsphp 的文件发送到该新池。将文件重命名为 .js.php,这是(在我看来)链接扩展类型的更好方法,因为它允许代码编辑器知道它是一个 PHP 文件,而无需在每个编辑器中设置自定义扩展。
然后它有一个标准的 php 扩展,您不必担心它的单独配置。