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. 第三百六十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本概念

    第三百六十节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的基本概念 elasticsearch的基本概念 1.集群:一个或者多个节点组织在一起 2.节点 ...

  2. Solr系列六:solr搜索详解优化查询结果(分面搜索、搜索结果高亮、查询建议、折叠展开结果、结果分组、其他搜索特性介绍)

    一.分面搜索 1. 什么是分面搜索? 分面搜索:在搜索结果的基础上进行按指定维度的统计,以展示搜索结果的另一面信息.类似于SQL语句的group by 分面搜索的示例: http://localhos ...

  3. ubuntu -- 系统目录结构

    1./:目录属于根目录,是所有目录的绝对路径的起始点,Ubuntu 中的所有文件和目录都在跟目录下. 2./etc:此目录非常重要,绝大多数系统和相关服务的配置文件都保存在这里,这个目录的内容一般只能 ...

  4. Android Jsoup 爬取网页数据

    一不小心一个月又过去了,事实上近期还是小忙小忙的,废话不多说.直接进入今天的主题吧. Jsoup – Java HTML Parser, with best of DOM, CSS, and jque ...

  5. Cisco交换机配置VLAN

    Cisco IOS中有两种方式创建vlan,在全局模式下使用vlan vlanid命令,如switch(config)#vlan 10; 在vlan database 下创建vlan ,如 switc ...

  6. python shlex 模块

    shkex 模块最常见的用法就是其中的split 函数,split 函数提供了和shell 处理命令行参数时一致的分隔方式 代码示例: shlex.split("python -u a.py ...

  7. linux drwxr-xr-x 是什么意思

    linux drwxr-xr-x 第一位表示文件类型.d是目录文件,l是链接文件,-是普通文件,p是管道 第2-4位表示这个文件的属主拥有的权限,r是读,w是写,x是执行. 第5-7位表示和这个文件属 ...

  8. 每天一个linux命令:ifconfig命令 临时修改重启后恢复原样

    许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config).通常需 ...

  9. ubuntu14.04安装好用的google拼音输入法

    装了ubuntu14.04后感觉自带的拼音输入法不好用的有没有,有些字拼不出来有没有...,其实我们安装google拼音输入发就会好很多... 方法/步骤     安装google拼音输入法 $sud ...

  10. js 闭包实例

    var db = (function() { // 创建一个隐藏的object, 这个object持有一些数据 // 从外部是不能访问这个object的 var data = {}; // 创建一个函 ...