zoukankan      html  css  js  c++  java
  • Nginx配置中FastCGI的几个命令

    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的研究也不够深入,实为抛砖引玉,欢迎大家在评论中交流您的看法。

  • 相关阅读:
    三层架构(我了解并详细分析)
    define a class for a linked list and write a method to delete the nth node.
    无阻塞情况connect生产EINPROGRESS错
    辛星和你解读PHP递归
    Android -- Looper.prepare()和Looper.loop() —深度版
    Canvas翻转方法
    BP神经网络的基本原理
    muduo网络图书馆评测
    HBASE
    MySQL
  • 原文地址:https://www.cnblogs.com/chenjianhong/p/4144783.html
Copyright © 2011-2022 走看看