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 判断一个对象的变量类型

    isinstance   语法: isinstance(object, classinfo) 如果参数object是classinfo的实例,或者object是classinfo类的子类的一个实例, ...

  2. Solr系列四:Solr(solrj 、索引API 、 结构化数据导入)

    一.SolrJ介绍 1. SolrJ是什么? Solr提供的用于JAVA应用中访问solr服务API的客户端jar.在我们的应用中引入solrj: <dependency> <gro ...

  3. 嵌入式开发之uart---rs232 和rs485 通用自定义通信协议

    http://www.go-gddq.com/html/QiTa-ZongHe_tx/2013-01/992622.htm http://blog.csdn.net/niuxuheng/article ...

  4. (转)linux用文件锁实现保证一个程序只能启动一个进程

    #include <stdio.h> #include <unistd.h>#include <fcntl.h>#include <errno.h>in ...

  5. 5.5 进入编辑模式 5.6 vim命令模式 5.7 vim实践

    5.5 进入编辑模式 5.6 vim命令模式 5.7 vim实践 进入编辑模式 小写i在当前字符前插入 大写I 在光标所在行的行首插入 大写O 在光标上面一行插入编辑 小写o在光标下面一行插入编辑 小 ...

  6. windows reload()

    reload() 方法用于重新加载当前文档.如果该方法没有规定参数,或者参数是 false,它就会用 HTTP 头 If-Modified-Since 来检测服务器上的文档是否已改变.如果文档已改变, ...

  7. MySql数据库恢复(*frm)文件

    mysql数据库恢复(*frm)文件 WorkBench 在使用虚拟服务器时,服务器提供商一般不会像我们使用本地数据库一样:使用导入导出(这样的文件后缀是*.sql).大部分时候提供的是一个文件夹,里 ...

  8. EJB里的问题解答

    1.什么是EJB? EJB即Enterprise JavaBean是JavaEE应用的业务层技术标准,以这项技术开发的组件叫做EJB组件. EJB架构师一个用于开发和部署基于组件的分布式业务应用的组件 ...

  9. Kafka监控工具KafkaOffsetMonitor配置及使用

    转载:https://www.cnblogs.com/dadonggg/p/8242682.html jar包下载地址 KafkaOffsetMonitor托管在Github上,可以通过Github下 ...

  10. SpringMVC由浅入深day01_12.4 pojo绑定_12.5自定义参数绑定实现日期类型绑定_12.6集合类

    12.4 pojo绑定 页面中input的name和controller的pojo形参中的属性名称一致,将页面中数据绑定到pojo. 页面定义: controller的pojo形参的定义: 打断点测试 ...