Linux下nginx.conf中 fastcgi_params和fastcgi.conf的区别

对比下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;
         }

猜你喜欢

转载自blog.csdn.net/qq_42303254/article/details/89503656
今日推荐