Nginx中FastCGI配置优化的方法

  介绍

小编给大家分享一下Nginx中FastCGI配置优化的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

<强> FastCGI:

FastCGI是从CGI发展改进而来的。传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后结果被返回给HTTP服务器。这在处理高并发访问时,几乎是不可用的。另外传统的CGI接口方式安全性也很差,现在已经很少被使用了。

FastCGI接口方式采用C/S结构,可以将HTTP服务器和脚本解析服务器分开,同时在脚本解析服务器上启动一个或者多个脚本解析守护进程。当HTTP服务器每次遇到动态程序时,可以将其直接交付给FastCGI进程来执行,然后将得到的结果返回给浏览器。这种方式可以让HTTP服务器专一地处理静态请求或者将动态脚本服务器的结果返回给客户端,这在很大程度上提高了整个应用系统的性能。

Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用.FastCGI接口在Linux下是套接字,(这个插座可以是文件插座,也可以是ip套接字)。为了调用CGI程序,还需要一个FastCGI的包装(包装器可以理解为用于启动另一个程序的程序),这个包装绑定在某个固定套接字上,如端口或者文件插座。当Nginx将CGI请求发送给这个插座的时候,通过FastCGI接口,包装器接纳到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据,接着,包装器再将返回的数据通过FastCGI接口,沿着固定的套接字传递给Nginx,最后,Nginx将返回的数据发送给客户端,这就是Nginx + FastCGI的整个运作过程。详细的过程,如图所示。

 Nginx中FastCGI配置优化的方法

例子:

 Nginx中FastCGI配置优化的方法

<强> Nginx中FastCGI参数的优化配置实例

在配置完成Nginx + FastCGI之后,为了保证Nginx下PHP环境的高速稳定运行,需要添加一些FastCGI优化指令。下面给出一个优化实例,将下面代码添加到Nginx主配置文件中的HTTP层级。

fastcgi_cache_path /usr/地方/Nginx/fastcgi_cache 水平=1:2  keys_zone=测试:10 m 活动=5米;,   fastcgi_connect_timeout  300年,   fastcgi_send_timeout  300年,   fastcgi_read_timeout  300年,   fastcgi_buffer_size  64 k,   fastcgi_buffers  4, 64 k,,   fastcgi_busy_buffers_size  128 k,   fastcgi_temp_file_write_size  128 k,   fastcgi_cache 测试,   fastcgi_cache_valid  200年,302年,1 h,,   fastcgi_cache_valid  301, 1 d,,   fastcgi_cache_valid  any  1 m;

上述代码的含义:

<李>

第一行代码是为FastCGI缓存指定一个文件路径,目录结构等级,关键字区域存储时间和非活动删除时间。

<李>

fastcgi_connect_timeout指定连接到后端FastCGI的超时时间。

<李>

fastcgi_send_timeout指定向FastCGI传送请求的超时时间,这个值是已经完成两次握手后向FastCGI传送请求的超时时间。

<李>

fastcgi_read_timeout指定接收FastCGI应答的超时时间,这个值是已经完成两次握手后接收FastCGI应答的超时时间。

<李>

fastcgi_buffer_size用于指定读取FastCGI应答第一部分需要用多大的缓冲区,这个值表示将使用1个64 kb的缓冲区读取应答的第一部分(应答头),可以设置为fastcgi_buffers选项指定的缓冲区大小。

<李>

fastcgi_buffers指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求。如果一个PHP脚本所产生的页面大小为256 kb,那么会为其分配4个64 kb的缓冲区来缓存,如果页面大小大于256 kb,那么大于256 kb的部分会缓存到fastcgi_temp指定的路径中,但是这并不是好方法,因为内存中的数据处理速度要快于硬盘,一般这个值应该为站点中PHP脚本所产生的页面大小的中间值,如果站点大部分脚本所产生的页面大小为256 kb,那么可以把这个值设置为“16 16 k”,“4 64 k”等。

<李>

fastcgi_busy_buffers_size的默认值是fastcgi_buffers的两倍。

<李>

fastcgi_temp_file_write_size表示在写入缓存文件时使用多大的数据块,默认值是fastcgi_buffers的两倍。

<李>

fastcgi_cache表示开启FastCGI缓存并为其指定一个名称。开启缓存非常有用,可以有效降低CPU的负载,并且防止502错误的发生,但是开启缓存也会引起很多问题,要视具体情况而定。

Nginx中FastCGI配置优化的方法