欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx配置中FastCGI的几个命令

程序员文章站 2022-03-01 17:05:38
...

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

fastcgi_cache_path /usr/local/Nginx/fastcgi_cache 
levels=1:2 keys_zone=TEST:10m inactive=5m; 

这个指令为Nginx配置FastCGI缓存指定一个路径,目录结构等级,关键字区域存储时间和非活动删除时间。

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 模块配置手册

以下为配置实例:

    fastcgi_connect_timeout 300;

    fastcgi_send_timeout 300;

    fastcgi_read_timeout 300;

    fastcgi_buffer_size 64k;

    fastcgi_buffers 4 64k;

    fastcgi_busy_buffers_size 128k;

    fastcgi_temp_file_write_size 128k;

当然本文对nginx的研究也不够深入,实为抛砖引玉,欢迎大家在评论中交流您的看法。

 

转载于:https://www.cnblogs.com/chenjianhong/archive/2013/05/22/4144783.html