对比下 fastcgi.conf 与 fastcgi_params 文件,可以看出只有以下差异,即 fastcgi.conf 只比 fastcgi_params 多了一行:
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
原本只有 fastcgi_params 文件,fastcgi.conf 是 nginx 0.8.30 才引入的。主要为是解决以下问题:原本 Nginx 只有 fastcgi_params,后来发现很多人在定义 SCRIPT_FILENAME 时使用了硬编码的方式。
例如:
fastcgi_param SCRIPT_FILENAME /var/www/foo$fastcgi_script_name;
于是为了规范用法便引入了 fastcgi.conf。
不过这样的话就产生一个疑问:为什么一定要引入一个新的配置文件,而不是修改旧的配置文件?
这是因为 fastcgi_param 指令是数组型的,和普通指令相同的是:内层替换外层;
和普通指令不同的是:当在同级多次使用的时候,是新增而不是替换。
换句话说,如果在同级定义两次 SCRIPT_FILENAME,那么它们都会被发送到后端,这可能会导致一些潜在的问题,为了避免此类情况,便引入了一个新的配置文件。
因此不再建议大家使用以下方式(搜了一下,网上大量的文章,并且 nginx.conf 的默认配置也是使用以下方式):
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
而使用最新的方式:
include fastcgi.conf;
php 有以下两种方式,选用第二种:
#第一种
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
#第二种
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi.conf;
}
原文地址:https://blog.csdn.net/qq_42303254/article/details/89503656
参考阅读:https://blog.martinfjordvald.com/nginx-config-history-fastcgi_params-versus-fastcgi-conf/
快来评论一下吧!
发表评论