NGNIX 有两份 fastcgi 配置文件,分别是 fastcgi_params
和 fastcgi.conf
,其区别只有一点点。到目前为止,由于 package managers,他们仍然引起新用户的混淆。
在自己系统中还有份 snippets/fastcgi-php.conf
,这个又是啥?
fastcgi_params vs 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; |
注意:$document_root
和 $fastcgi_script_name
之间没有 /
。
原本 NGNIX 只有 fastcgi_params
,后来发现很多人在定义 SCRIPT_FILENAME
时使用了硬编码的方式,于是为了规范用法便引入了 fastcgi.conf
。
不过这样的话就产生一个疑问:为什么一定要引入一个新的配置文件,而不是修改旧的配置文件?
这是因为fastcgi_param
指令是数组型的,和普通指令相同的是:内层替换外层;和普通指令不同的是:当在同级多次使用的时候,是新增而不是替换。
换句话说,如果在同级定义两次 SCRIPT_FILENAME
,那么它们都会被发送到后端,这可能会导致一些潜在的问题,为了避免此类情况,便引入了一个新的配置文件。
server { |
fastcgi-php.conf
fastcgi-php.conf
是一个 Nginx 配置文件片段,用于配置 Nginx 服务器与 PHP FastCGI 进程之间的通信。它定义了 FastCGI 连接的参数和选项,以及如何处理 PHP 脚本。通常,这个文件是在 Nginx 的主配置文件中包含的,以确保 Nginx 能够正确地将请求发送到 PHP FastCGI 进程。
# regex to split $uri to $fastcgi_script_name and $fastcgi_path |
从 fastcgi-php.conf
的内容可以看出,它帮我们封装了一些公共代码。
server { |
PHP NGINX Unix Sock 切换 TCP/IP
sudo vim /etc/php5/fpm/pool.d/www.conf |
# 取消注释 |
and then, edit NGINX configuration file
fastcgi_pass unix:/var/run/php5-fpm.sock; |
sudo service php5-fpm restart |