缘起于重装MediaWiki时,因为Nginx配置文件的错误,导致页面显示不正常,输入网站地址后不会自动进入首页,必须手动输入,同时JS和CSS文件也无法加载,排查的结果就是调用fastcgi参数时用错了文件(具体错误见《Mediawiki短链(Short URL)设置》)。
通常可供选择的是fastcgi_params
和fastcgi.conf
两个文件,要说区别真不大,但并非一点区别都没有,否则也就不会出现我上面提到的现象了。
以下是网上搜集到的信息,记录一下,方便以后遇到问题时查阅。
它们都是用于配置NGINX与FastCGI应用程序通信的参数文件。fastcgi_params
: 包含了FastCGI应用程序所需的最基本参数,如SCRIPT_FILENAME
、QUERY_STRING
等。这些参数通常不需要修改。fastcgi.conf
: 包含了更高级的FastCGI参数,可以用于优化FastCGI应用程序的性能,如设置连接超时时间、缓冲区大小等。fastcgi.conf
比fastcgi_params
多了一行SCRIPT_FILENAME
的定义
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
注意:documentroot
和fastcgi_script_name
之间没有/。
原本Nginx只有fastcgi_params
,后来发现很多人在定义SCRIPT_FILENAME
时使用了硬编码的方式,于是为了规范用法便引入了fastcgi.conf
。
不过这样的话就产生一个疑问:为什么一定要引入一个新的配置文件,而不是修改旧的配置文件?
这是因为fastcgi_param
指令是数组型的,和普通指令相同的是:内层替换外层;和普通指令不同的是:当在同级多次使用的时候,是新增而不是替换。
换句话说,如果在同级定义两次SCRIPT_FILENAME
,那么它们都会被发送到后端,这可能会导致一些潜在的问题,为了避免此类情况,便引入了一个新的配置文件。