来源地址:http://blog.csdn.net/eric1012/article/details/6075460
以下配置都是基于Nginx 0.8.53版本做解析。
资源来源于个人翻译,网上摘录,如有错误信息地方,请提醒修正。
本人已经制作PDF版本,可以直接下载查阅。
http://blogimg.chinaunix.net/blog/upfile2/101214143816.pdf
Fastcgi_param
指定一些传递到FastCGI服务器的参数
如果PHP在编译时带有--enable-force-cgi-redirect,则必须传递值为200的REDIRECT_STATUS参数:
fastcgi_param REDIRECT_STATUS 200;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_pass
指定FastCGI服务器监听端口与地址,可以是本机或者其它:
fastcgi_pass localhost:9000; // 如果是php 这里对应的就是 php-fpm 的端口
使用Unix socket:
fastcgi_pass unix:/tmp/fastcgi.socket;
fastcgi_buffers 16 16k;
默认值:fastcgi_buffers 8 4k/8k;
fastcgi_buffer_size 16k;
默认值:fastcgi_buffer_size 4k/8k ;
指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答,如上所示,如果一个php脚本所产生的页面大小为256k,则会为其分配16个16k的缓冲区来缓存,如果大于256k,增大于256k的部分会缓存到fastcgi_temp指定的路径中,当然这对服务器负载来说是不明智的方案,因为内存中处理数据速度要快于硬盘,通常这个值的设置应该选择一个你的站点中的php脚本所产生的页面大小的中间值,比如你的站点大部分脚本所产生的页面大小为256k就可以把这个值设置为16 16k,或者4 64k 或者64 4k,但很显然,后两种并不是好的设置方法,因为如果产生的页面只有32k,如果用4 64k它会分配1个64k的缓冲区去缓存,而如果使用64 4k它会分配8个4k的缓冲区去缓存,而如果使用16 16k则它会分配2个16k去缓存页面,这样看起来似乎更加合理。
fastcgi_cache NAME
默认值:off
设置共享内存中的名称和是否开启cache
建议:
fastcgi_read_timeout
等待后端应用程序返回给nginx的最长时间,如果超过时间nginx没有收到信息,会报502,504的错误。
fastcgi_connect_timeout
FastCGI的指令集与服务器的连接超时时间。官方建议,这个值不能超过75秒。但是很多如果后端应用程序运行时间会很长的,都设置值远远超过75,300-600都有。
但是数值应该不低于fastcgi_send_timeout和fastcgi_read_timeout,不然其他设置就无效了
fastcgi_send_timeout
等待一个FastCGI进程发送数据的最长时间,如果是在长时间运行后端应用程序,但是一直每一输出的情况,需要提高此值。
fastcgi_pass_head NAME
默认情况下nginx不会将来自FastCGI服务器的”Status”和”X-Accel-…“头传送到客户端,这个参数可以强制定义发送至客户端。
fastcgi_hide_header
默认情况下nginx不会将来自FastCGI服务器的”Status”和”X-Accel-…“头传送到客户端,这个参数也可以隐藏某些其它的头。
建议:不做修改
fastcgi_ignore_headers
这个指令禁止处理一些FastCGI服务器应答的头部字段,比如可以指定像"X-Accel-Redirect", "X-Accel-Expires", "Expires"或"Cache-Control"等
fastcgi_redirect_error(old)
fastcgi_intercept_error(new)
默认值:fastcgi_intercept_errors off
这个指令指定是否传递4xx和5xx错误信息到客户端,或者允许nginx使用error_page处理错误信息。
你必须明确的在error_page中指定处理方法使这个参数有效,正如Igor所说“如果没有适当的处理方法,nginx不会拦截一个错误,这个错误不会显示自己的默认页面,这里允许通过某些方法拦截错误。
fastcgi_split_path_info
用于将请求页面与发送参数分离的标准定义。0.7.31以上版本有效。
eg.
location ~ ^.+/.php {
(...)
fastcgi_split_path_info ^(.+/.php)(.*)$; #分割的标准,可以使用正则表达式
fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
(...)
}
请求”/show.php/article/0001”的参数SCRIPT_FILENAME将设置为”/path/to/php/show.php”,参数PATH_INFO为”/article/0001”。
fastcgi_index
定义首页设置文件。
如果URI以斜线结尾,文件名将追加到URI后面,这个值将存储在变量$fastcgi_script_name中。
fastcgi_ignore_client_abort
如果当前连接请求FastCGI服务器失败,为防止其与nginx服务器断开连接,可以用这个指令。
用来决定忽略用户取消的请求。
建议不做修改.
fastcgi_max_temp_file_size
根据源代码关闭FastCGI缓冲,默认是关闭,开启将增大I/O的读写量,而且消耗内存大量资源。
fastcgi_cache_methods
在缓存FastCGI请求中允许哪些http方法
默认是指定GET,HEAD。而且无法禁止。可以不做任何修改。
fastcgi_cache_key
设置缓存的关键字,可以使用默认
eg.fastcgi_cache_key localhost:9000$request_uri;
fastcgi_cache_valid
为指定的http返回代码指定缓存时间
eg.
fastcgi_cache_valid 200 302 10m;
fastcgi_cache_valid 404 1m;
fastcgi_next_upstream
语法:fastcgi_next_upstream error|timeout|invalid_header|http_500|http_503|http_404|off
指令指定哪种情况请求将被转发到下一个FastCGI服务器
·error — 传送中的请求或者正在读取应答头的请求在连接服务器的时候发生错误。
·timeout — 传送中的请求或者正在读取应答头的请求在连接服务器的时候超时。
·invalid_header — 服务器返回空的或者无效的应答。
·http_500 — 服务器返回500应答代码。
·http_503 — 服务器返回503应答代码。
·http_404 — 服务器返回404应答代码。
·off — 禁止请求传送到下一个FastCGI服务器。
fastcgi_cache_path
这个指令指定FastCGI缓存的路径以及其他的一些参数,所有的数据以文件的形式存储,缓存的关键字(key)和文件名为代理的url计算出的MD5值。Level参数设置缓存目录的目录分级以及子目录的数量:
eg.fastcgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m inactive=5min;
最好使用在fastcgi_temp_path和fastcgi_cache_path指示两个参数相同的文件系统
fastcgi_cache_min_uses
指令指定了在inactive参数值时间内经过多少次请求的相同URL将被缓存。
fastcgi_cache_use_stale
在某些网关错误、超时的情况下,nginx都将传送过期的缓存数据.默认是关闭,可以不做修改。
fastcgi_store
语法:fastcgi_store [on | off | path]
默认值:fastcgi_store off
使用字段:http, server, location
制定了存储前端文件的路径,参数on指定了将使用root和alias指令相同的路径,off禁止存储,此外,参数中可以使用变量使路径名更明确:
fastcgi_store /data/www$original_uri;
应答中的"Last-Modified"头将设置文件的最后修改时间,为了使这些文件更加安全,可以将其在一个目录中存为临时文件,使用fastcgi_temp_path指令。
这个指令可以用在为那些不是经常改变的后端动态输出创建本地拷贝的过程中。如:
location /images/ {
root /data/www;
error_page 404 = /fetch$uri;
}
location /fetch {
internal;
fastcgi_pass fastcgi://backend;
fastcgi_store on;
fastcgi_store_access user:rw group:rw all:r;
fastcgi_temp_path /data/temp;
alias /data/www;
}
fastcgi_store并不是缓存,某些需求下它更像是一个镜像。
fastcgi_store_access
语法:fastcgi_store_access users:permissions [users:permission ...]
默认值:fastcgi_store_access user:rw
使用字段:http, server, location
这个参数指定创建文件或目录的权限,例如:
fastcgi_store_access user:rw group:rw all:r;
如果要指定一个组的人的相关权限,可以不写用户,如:
fastcgi_store_access group:rw all:r;
fastcgi_bind
语法:fastcgi_bind address
默认值:none
使用字段:http, server, location
可用版本:大于0.8.22
示例:
fastcgi_bind 192.168.1.1;
指令在调用connect()函数之前将解析每个上游socket到一个本地地址,可以使用在主机拥有多个网卡接口或别名,但是你只允许到外的连接来自指定的网卡或者地址的情况下。如果是多网卡,可以只指定访问一个IP,其他IP无法访问。