对比下fastcgi.conf与fastcgi_params文件,可以看出只有以下差异:即fastcgi.conf只比fastcgi_params多了一行

astcgi_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;
}
————————————————
版权声明:本文为CSDN博主「Cinjosy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42303254/article/details/89503656

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注