您的位置:首页 > 运维架构 > Nginx

Nginx配置中FastCGI的几个命令

2013-05-22 13:52 260 查看
Nginx配置一直以来都在程序员的工作中不断的使用,在这个中有很多的问题需要我们不断的学习,其中FastCGI就是有不少的问题需要我们解决,下面就是关于FastCGI在Nginx配置的几个指令:

fastcgi_connect_timeout 300;

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

fastcgi_send_timeout 300;

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

fastcgi_read_timeout 300;

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

fastcgi_buffer_size 4k;

指定读取FastCGI应答第一部分需要用多大的缓冲区,一般第一部分应答不会超过1k,由于页面大小为4k,所以这里设置为4k。

fastcgi_buffers 8 4k;

指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答。

fastcgi_busy_buffers_size 8k;

这个指令我也不知道是做什么用,只知道默认值是fastcgi_buffers的两倍。

fastcgi_temp_file_write_size 8k;

在写入fastcgi_temp_path时将用多大的数据块,默认值是fastcgi_buffers的两倍。

fastcgi_cache TEST

开启FastCGI缓存并且为其制定一个名称。个人感觉开启缓存非常有用,可以有效降低CPU负载,并且防止502错误。

fastcgi_cache_valid 200 302 1h;
fastcgi_cache_valid 301 1d;
fastcgi_cache_valid any 1m;

为指定的应答代码指定缓存时间,如上例中将200,302应答缓存一小时,301应答缓存1天,其他为1分钟。

fastcgi_cache_min_uses 1;

缓存在fastcgi_cache_path指令inactive参数值时间内的最少使用次数,如上例,如果在5分钟内某文件1次也没有被使用,那么这个文件将被移除。

fastcgi_cache_use_stale error timeout invalid_
header http_500;

不知道这个参数的作用,猜想应该是让Nginx知道哪些类型的缓存是没用的。

在nginx运维中一个超普遍的错误就是502 Bad Gateway,此错误出现的原因有很多,可参照此文:http://bbs.51osos.com/thread-3446-1-1.html。本文主要探讨FastCGI buffer的配置导致502 Bad Gateway。

Nginx 的 buffer 机制:来自 FastCGI Server 的 Response,Nginx 将其缓冲到内存中,然后依次发送到客户端浏览器。缓冲区的大小涉及的两个参数是fastcgi_buffers 和 fastcgi_buffer_size 。

fastcgi_buffer_size指定将用多大的缓冲区来读取从FastCGI进程到来应答头。

fastcgi_buffers指定了从FastCGI进程到来的应答,本地将用多少和多大的缓冲区读取。

如:fastcgi_buffer_size 16k;

fastcgi_buffers 16 16k;

那么 fastcgi_buffer=16*16+16=272k

如果一个php脚本产生的页面大小为32k,将分2个16k去缓存页面,如果一个php脚本所产生的页面大小为256k,则会为其分配16个16k的缓冲区来缓存,如果大于256k,增大于256k的部分会缓存到fastcgi_temp指定的路径中,如果想关闭对所有请求道磁盘的缓冲,可以将fastcgi_max_temp_file_size 设置为0。通常这个值的设置应该选择一个你的站点中的php脚本所产生的页面大小的中间值。如果您服务器上的内存够大,可以将以上参数适当调大。当然以上参数并不是越大越好,也没多大实际意义,需要根据您的实际情况,如页面大小及服务器内存大小,如果以上参数太小的话,就会频繁的往磁盘写数据,对性能影响还是很大的,毕竟内存的速度比硬盘大的多,可以增大以上参数来增加缓冲区的大小。

fastcgi 模块配置手册

以下为配置实例:

当然本文对nginx的研究也不够深入,实为抛砖引玉,欢迎大家在评论中交流您的看法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: