为什么有了 fastcgi_params 还要有 fastcgi.conf
fastcgi.conf
对比下fastcgi.conf与fastcgi_params文件,可以看出只有以下差异:
tctq4master@ddd:/etc/nginx$ diff fastcgi.conf fastcgi_params 2d1 < fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 25a25,26 > > fastcgi_param SCRIPT_FILENAME $request_filename;
即fastcgi.conf只比fastcgi_params多了一行
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
原本只有fastcgi_params文件,fastcgi.conf是nginx 0.8.30 (released: 15th of December 2009)才引入的。主要为是解决以下问题(参考:http://www.dwz.cn/x3GIJ):
原本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 $document_root$fastcgi_script_name;
include fastcgi_params;
而推荐使用最新的方式:
include fastcgi.conf;
原文网址:http://www.cnblogs.com/skynet/p/4146083.html
=============================
https://blog.martinfjordvald.com/2013/04/nginx-config-history-fastcgi_params-versus-fastcgi-conf/
官网原文节选:
Because of how array directives inherit and interact the people using the old configuration style made it impossible to include the line in fastcgi_params. Doing this would have meant that SCRIPT_FILENAME would be defined twice and both would be sent to the backend, potentially causing confusing behaviour.
In 0.8.30 (released: 15th of December 2009) Igor then included fastcgi.conf which was the same as fastcgi_params except including the improved SCRIPT_FILENAME fastcgi_param. This meant that the community could now start recommending people include fastcgi.conf instead of recommending moving SCRIPT_FILENAME into fastcgi_params. New articles on the wiki mostly used this, the popular articles were slowly changed to use it and we were promoting it in the IRC support channel.
============================================================================
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
这句话其实就是定义php中用到的服务器变量 ——$_SERVER
http://wiki.nginx.org/NginxHttpFcgiModule 这个网址下有这么一句话:
This module allows Nginx to interact with FastCGI processes and control what parameters are passed to the process。
意思是 “服务器” 向你的处理php的cgi传递过去他需要的一些参数,而至少要有下面的两个参数php才能执行起来。
以下是例子
Below is an example of the minimally necessary parameters for PHP:
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string;
Parameter SCRIPT_FILENAME is used by PHP for determining the name of script. to execute, and QUERY_STRING contains the parameters of the request.
所以 我们在没有定义SCRIPT_FILENAME这个系统变量的时候 php是没法解释执行的
这个变量的定义可以写在nginx的配置文件nginx.conf里 也可以写在外部 用include的方式在nginx.conf里包含进来。
参考网址: http://www.shangxueba.com/jingyan/303616.html
相关推荐
Nginx 的目录结构包括 client_body_temp、conf、fastcgi.conf、fastcgi.conf.default、fastcgi_params、fastcgi_params.default、koi-utf、koi-win、mime.types、mime.types.default、nginx.conf、nginx.conf....
include fastcgi_params; } ``` #### 五、启动与验证 1. **启动Nginx** - 打开命令提示符,切换到Nginx的`sbin`目录,执行`nginx.exe`命令启动Nginx服务。 2. **访问测试页面** - 在浏览器中输入`...
include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } ``` 2. 配置站点文件:在`/usr/local/nginx/conf/sites-available/`创建一个新配置文件,如`discuz.conf`,并指定...
配置PHP5 FastCGI与Nginx协同工作,你需要创建一个名为`fastcgi_params`的文件,该文件包含了FastCGI模块所需的基本环境变量。将以下内容保存到适当的目录,例如`/usr/local/nginx/conf`或`/etc/nginx`: ```bash #...
4. **`fastcgi_params`和`fastcgi.conf`**: 这两个文件都是用于配置FastCGI参数,其中`fastcgi.conf`包含了`SCRIPT_FILENAME`的定义。`fastcgi_params`后来发现需要规范化`SCRIPT_FILENAME`的设置,因此引入了`...
这里需要注意的是,Nginx提供了两个不同的文件来配置FastCGI参数:`fastcgi_params`和`fastcgi.conf`。后者额外定义了`SCRIPT_FILENAME`变量,使得配置更加简洁: ```nginx location ~ \.php$ { include fastcgi....
/application/nginx-1.6.3/conf/fastcgi_params.default /application/nginx-1.6.3/conf/koi-utf /application/nginx-1.6.3/conf/koi-win /application/nginx-1.6.3/conf/mime.types /application/nginx-1.6.3/conf/...
# include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } ``` `listen`指定监听端口,`server_...
/usr/local/etc/nginx/valet/valet.conf location ~ \.php$ { # added params: fastcgi_buffers 16 16k; fastcgi_buffer_size 32k;}添加这些参数以使其生效后,请确保执行“代客重启”。 如果使用调试栏之类的东西...
include fastcgi_params; } ``` 重启Nginx使更改生效: ```bash /etc/init.d/nginx restart ``` 至此,我们已经成功配置了LNMP环境。现在,你可以将PHP文件放在 `/usr/share/nginx/html` 目录下,并通过Web...
include fastcgi_params; } ``` - 配置Nginx日志、错误日志、访问控制等其他设置。 6. **启动与测试**: - 启动Nginx和PHP-FPM服务。 - 使用`curl`或浏览器访问测试页面,确保Nginx能正确转发请求给PHP-FPM...
include fastcgi_params; } ``` 至此,我们已经成功地配置了一个 CentOS 系统上的 Nginx、FastCGI 和 MySQL 环境,可以处理 PHP 请求并存储数据。为了保证服务的稳定性和安全性,还需要定期更新软件包、监控系统...
include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } ``` 3. 配置路由规则: ThinkPHP5.x提供了强大的路由功能,可以进一步定制URL。在`route.php`文件中定义路由...
4. 配置fastcgi_params文件,确保包含以下内容: ``` fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param ...
include fastcgi_params; ``` 四、总结 通过精心调整Nginx的配置和充分利用FastCGI的优势,我们可以创建一个高可用、高性能的Web服务器。这不仅包括正确配置工作模式、内存缓冲、连接超时、日志记录等基础设置,也...
`fastcgi.conf`、`fastcgi_params`等文件通常包含了这些模块的默认设置。 总结来说,Nginx Proxy Manager通过提供图形化的界面,简化了对Nginx配置的管理,使得设置和管理反向代理变得更为直观和便捷。了解Nginx的...
include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } ``` ### 测试配置并重启服务 测试Nginx配置是否正确: ```bash nginx -t ``` 如果没有错误,重启Nginx和...