FastCGI参数

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

fastcgi在nginx配置文件中的配置实例:

http {

.....

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;

fastcgi_max_temp_file_size 0;

fastcgi_temp_path /dev/shm/nginx_tmp;

fastcgi_cache_path /dev/shm/nginx_cache levels=1:2 keys_zone=common_cache:20m inactive=5m max_size=1024m;

fastcgi_cache_key "$request_method$host$request_uri";

fastcgi_cache_min_uses 1;

fastcgi_cache_bypass $cookie_nocache $arg_nocache;

fastcgi_no_cache $cookie_nocache $arg_nocache;

fastcgi_cache_use_stale error timeout http_500 http_404;

fastcgi_cache_methods GET HEAD POST;

......

}

参数解释:

1)fastcgi_connect_timeout : 指定连接到后端FastCGI的超时时间

2)fastcgi_send_timeout指定向FastCGI传送请求的超时时间,这个值是已经完成两次握手后向FastCGI传送请求的超时时间。
3)fastcgi_read_timeout指定接收FastCGI应答的超时时间,这个值是已经完成两次握手后接收FastCGI应答的超时时间。

4)fastcgi_buffer_size

语法:fastcgi_buffer_size the_size ;

默认值:fastcgi_buffer_size 4k/8k ;

使用字段:http, server, location

作用:这个参数指定将用多大的缓冲区来读取从FastCGI服务器到来应答的第一部分。

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

5)fastcgi_buffers

语法:fastcgi_buffers the_number is_size;

默认值:fastcgi_buffers 8 4k/8k;

使用字段:http, server, location

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

6)fastcgi_busy_buffers_size   系统很忙时可以使用的fastcgi_buffers大小,一般fastcgi_buffers的两倍

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

8)fastcgi_max_temp_file_size 0;   用于配置所有临时文件的总体积大小

9)fastcgi_cache

语法:fastcgi_cache zone|off;

默认值:off

使用字段:http, server, location

为缓存实际使用的共享内存指定一个区域,相同的区域可以用在不同的地方。

10)fastcgi_cache_key

语法:fastcgi_cache_key line

默认值:none

使用字段:http, server, location

设置缓存的关键字,如:

fastcgi_cache_key “$request_method$host$request_uri”;

11)fastcgi_cache_path

语法:fastcgi_cache_path path [levels=m:n] keys_zone=name:size [inactive=time] [max_size=size]

默认值:none

使用字段:http

clean_time参数在0.7.45版本中已经移除。

这个指令指定FastCGI缓存的路径以及其他的一些参数,所有的数据以文件的形式存储,缓存的关键字(key)和文件名为代理的url计算出的MD5值。

Level参数设置缓存目录的目录分级以及子目录的数量,例如指令如果设置为:

fastcgi_cache_path  /data/nginx/cache  levels=1:2   keys_zone=one:10m;

那么数据文件将存储为:

/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c

缓存中的文件首先被写入一个临时文件并且随后被移动到缓存目录的最后位置,0.8.9版本之后可以将临时文件和缓存文件存储在不同的文件系统,但是需要明白这种移动并不是简单的原子重命名系统调用,而是整个文件的拷贝,所以最好在fastcgi_temp_path和fastcgi_cache_path的值中使用相同的文件系统。

另外,所有活动的关键字及数据相关信息都存储于共享内存池,这个值的名称和大小通过key_zone参数指定,inactive参数指定了内存中的数据存储时间,默认为10分钟。

max_size参数设置缓存的最大值,一个指定的cache manager进程将周期性的删除旧的缓存数据。

12)fastcgi_cache_methods

语法:fastcgi_cache_methods [GET HEAD POST];

默认值:fastcgi_cache_methods GET HEAD;

使用字段:main,http,location

无法禁用GET/HEAD ,即使你只是这样设置:

fastcgi_cache_methods  POST;

13)fastcgi_cache_min_uses

语法:fastcgi_cache_min_uses n

默认值:fastcgi_cache_min_uses 1

使用字段:http, server, location

作用:指定了经过多少次请求的相同URL将被缓存。

14)fastcgi_cache_use_stale

语法:fastcgi_cache_use_stale [updating|error|timeout|invalid_header|http_500]

默认值:fastcgi_cache_use_stale off;

使用字段:http, server, location

作用:定义哪些情况下用过期缓存

15)fastcgi_cache_valid

语法:fastcgi_cache_valid [http_error_code|time]

默认值:none

使用字段:http, server, location

为指定的http返回代码指定缓存时间,例如:

fastcgi_cache_valid  200 302  10m;

fastcgi_cache_valid  404      1m;

将响应状态码为200和302缓存10分钟,404缓存1分钟。

默认情况下缓存只处理200,301,302的状态。

同样也可以在指令中使用any表示任何一个。

fastcgi_cache_valid  200 302 10m;

fastcgi_cache_valid  301 1h;

fastcgi_cache_valid  any 1m;

16)fastcgi_index

语法:fastcgi_index file

默认值:none

使用字段:http, server, location

如果URI以斜线结尾,文件名将追加到URI后面,这个值将存储在变量$fastcgi_script_name中。例如:

fastcgi_index  index.php;

fastcgi_param  SCRIPT_FILENAME  /home/www/scripts/php$fastcgi_script_name;

请求"/page.php"的参数SCRIPT_FILENAME将被设置为"/home/www/scripts/php/page.php",但是"/"为"/home/www/scripts/php/index.php"。

17) fastcgi_hide_header

语法:fastcgi_hide_header name

使用字段:http, server, location

默认情况下nginx不会将来自FastCGI服务器的"Status"和"X-Accel-..."头传送到客户端,这个参数也可以隐藏某些其它的头。

如果必须传递"Status"和"X-Accel-..."头,则必须使用fastcgi_pass_header强制其传送到客户端。

18)fastcgi_ignore_client_abort

语法:fastcgi_ignore_client_abort on|off

默认值:fastcgi_ignore_client_abort off

使用字段:http, server, location

作用:如果当前连接请求FastCGI服务器失败,为防止其与nginx服务器断开连接,可以用这个指令。

19)fastcgi_ignore_headers

语法:fastcgi_ignore_headers name [name...]

使用字段:http, server, location

这个指令禁止处理一些FastCGI服务器应答的头部字段,比如可以指定像"X-Accel-Redirect", "X-Accel-Expires", "Expires"或"Cache-Control"等。

20)fastcgi_intercept_errors

语法:fastcgi_intercept_errors on|off

默认值:fastcgi_intercept_errors off

使用字段:http, server, location

这个指令指定是否传递4xx和5xx错误信息到客户端,或者允许nginx使用error_page处理错误信息。

你必须明确的在error_page中指定处理方法使这个参数有效,正如Igor所说“如果没有适当的处理方法,nginx不会拦截一个错误,这个错误不会显示自己的默认页面,这里允许通过某些方法拦截错误。

21)fastcgi_no_cache

语法:fastcgi_no_cache variable [...]

默认值:None

使用字段:http, server, location

确定在何种情况下缓存的应答将不会使用,示例:

fastcgi_no_cache $cookie_nocache  $arg_nocache$arg_comment;

fastcgi_no_cache $http_pragma     $http_authorization;

如果为空字符串或者等于0,表达式的值等于false,例如,在上述例子中,如果在请求中设置了cookie "nocache",缓存将被绕过。

22)fastcgi_next_upstream

语法:fastcgi_next_upstream error|timeout|invalid_header|http_500|http_503|http_404|off

默认值:fastcgi_next_upstream error timeout

使用字段:http, server, location

指令指定哪种情况请求将被转发到下一个FastCGI服务器:

·error — 传送中的请求或者正在读取应答头的请求在连接服务器的时候发生错误。

·timeout — 传送中的请求或者正在读取应答头的请求在连接服务器的时候超时。

·invalid_header — 服务器返回空的或者无效的应答。

·http_500 — 服务器返回500应答代码。

·http_503 — 服务器返回503应答代码。

·http_404 — 服务器返回404应答代码。

·off — 禁止请求传送到下一个FastCGI服务器。

注意传送请求在传送到下一个服务器之前可能已经将空的数据传送到了客户端,所以,如果在数据传送中有错误或者超时发生,这个指令可能无法修复一些传送错误。

23)fastcgi_param

语法:fastcgi_param parameter value

默认值:none

使用字段:http, server, location

指定一些传递到FastCGI服务器的参数。

可以使用字符串,变量,或者其组合,这里的设置不会继承到其他的字段,设置在当前字段会清除掉任何之前的定义。

下面是一个PHP需要使用的最少参数:

fastcgi_param  SCRIPT_FILENAME  /home/www/scripts/php$fastcgi_script_name;

fastcgi_param  QUERY_STRING     $query_string;

PHP使用SCRIPT_FILENAME参数决定需要执行哪个脚本,QUERY_STRING包含请求中的某些参数。

如果要处理POST请求,则需要另外增加三个参数:

fastcgi_param  REQUEST_METHOD   $request_method;

fastcgi_param  CONTENT_TYPE     $content_type;

fastcgi_param  CONTENT_LENGTH   $content_length;

如果PHP在编译时带有--enable-force-cgi-redirect,则必须传递值为200的REDIRECT_STATUS参数:

fastcgi_param  REDIRECT_STATUS  200;

FastCGI在nginx中的参数的更多相关文章

  1. Nginx中server_name 参数详解

    Nginx中的server_name指令主要用于配置基于名称的虚拟主机,server_name指令在接到请求后的匹配顺序分别为: 1.准确的server_name匹配,例如: server { lis ...

  2. Nginx中FastCGI配置优化

    FastCGI: FastCGI是从CGI发展改进而来的.传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后结果被返回给HTTP服务器 ...

  3. Nginx 中 FastCGI 配置示例

    nginx 中 FastCGI 参数:主要是在 http 层 :保证PHP环境的高校运行 主要对PHP用来解析 fastcgi_cache_path /tmp/fastcgi_cache levels ...

  4. nginx中fastcgi_params配置参数

    Nginx 的 fastcgi 模块提供了 fastcgi_param 指令来主要处理这些映射关系,下面 Ubuntu 下 Nginx 的一个配置文件,其主要完成的工作是将 Nginx 中的变量翻译成 ...

  5. nginx中的超时设置

    nginx使用proxy模块时,默认的读取超时时间是60s. 1. send_timeout syntax: send_timeout the time default: send_timeout 6 ...

  6. Nginx中防盗链(下载防盗链和图片防盗链)操作记录

    日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...

  7. 在Nginx中搭建Nagios监控平台

    本文只做Nginx下Nagiox安装的说明,其它关于Nagios监控的详细配置请参考我的另一篇文章[Ubuntu 10.04下构建Nagios监控平台] Nagios依赖PHP环境和perl环境.由于 ...

  8. 【转载】关于nginx以及内核参数的配置

    nginx应用总结(2)--突破高并发的性能优化  原文地址:https://www.cnblogs.com/kevingrace/p/6094007.html 在日常的运维工作中,经常会用到ngin ...

  9. Nginx中防盗链(下载防盗链和图片防盗链)及图片访问地址操作记录

    日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...

随机推荐

  1. Unity Package Manager Error的解决方案

    问题来源 启动Unity时显示 fail to start Unity Package Manager,软件环境为 Unity 2017.3.0f3. 解决方案 根据网上所给的方案,我选择添加环境变量 ...

  2. 参考论坛:Mali kernel driver TX011-SW-99002-r5p1-00rel0 for firefly

    最近手头有一块firefly_rk3288_reload的开发板,想实现在linux 下用openGL ES来做视频显示. 找到opengGL相关移植,参考论坛(http://bbs.t-firefl ...

  3. hdu 2771(uva 12171) Sculpture bfs+离散化

    题意: 给出一些边平行于坐标轴的长方体,这些长方体可能相交.也可能相互嵌套.这些长方体形成了一个雕塑,求这个雕塑的整体积和表面积. 题解: 最easy想到直接进行bfs或者dfs统计,但此题的麻烦之处 ...

  4. 关于Struts2的文件下载

    首先先来说下关于文件下载的原理: 服务端为客户端提供了一个下载服务,所以服务端需要一个输出流(把客户请求下载的文件输出),相对于服务端来说,客户端需要下载接收一个文件,所以它需要一个输入流(接收文件) ...

  5. adb错误:Failed to execute android command 'adb devices'.

    好吧,我是用的phonegap3.0开发的,很简单,安装的时候一句phonegap run android –device就可以了(-device参数非必要,我是为了不跑模拟器,加上此参数限制只跑到设 ...

  6. Android 布局学习之——Layout(布局)详解一

    layout(布局)定义了用户界面的可视化结构(visual structure),如Activity的UI,应用窗口的UI. 有两种方式声明layout: 1.在xml文件中声明UI组件. 2.在运 ...

  7. Android学习笔记——保存文件(Saving Files)

              本人邮箱:JohnTsai.Work@gmail.com,欢迎交流讨论.                 欢迎转载,转载请注明网址:http://www.cnblogs.com/J ...

  8. 常用Dos(转)

    先介绍一下通配符的概念. 通配符*和? *表示一个字符串 ?只代表一个字符 注意通配符只能通配文件名或扩展名,不能全都表示.例如我们要查找以字母y开头的所有文件,可以输入以下命令:dir y*.*:如 ...

  9. WebGL常用数学公式

    1.三角函数 坐标轴采用右手法则,沿Z轴的逆时针方向为正角度,假设原始点为p(x,y,z),a是X轴旋转到点p的角度,r是从原始点到p点的距离.用这两个变量计算出点p的坐标,等式如下: x = rco ...

  10. 代码记录——phase16,block36

    36*36 -2,-2扩展 代码有问题,有时能运行有时报错. HRESULT RotateZoom(PBYTE pbSrc,int iWidth,int iHeight,double dbRotate ...