nginx中文文档-ngx_http_fastcgi_module(M-P)

本文档包含以下指令:fastcgi_max_temp_file_size、fastcgi_next_upstream、fastcgi_next_upstream_timeout、fastcgi_next_upstream_tries、fastcgi_no_cache、fastcgi_param、fastcgi_pass、fastcgi_pass_header、fastcgi_pass_request_body、fastcgi_pass_request_headers

fastcgi_max_temp_file_size

语法:fastcgi_max_temp_file_size size
默认:fastcgi_max_temp_file_size 1024m
上下文:http, server, location

当启用了从FastCGI服务器接收响应缓冲区功能,整体请求不能够完全放入fastcgi_buffer_size和 fastcgi_buffers指令设置的缓冲区中时,一部分请求会保存到临时文件中。该指令设置了临时文件的大小。一次写入临时文件的数据大小通过fastcgi_temp_file_write_size指令设置。
零值禁用将响应缓冲区写入临时文件的功能。
该限制不适用于将在磁盘缓存或存储的响应。

fastcgi_next_upstream

语法:fastcgi_next_upstream error | timeout | invalid_header | http_500 | http_503 | http_403 | http_404 | non_idempotent | off …
默认:fastcgi_next_upstream error timeout
上下文:http, server, location

定义哪种情况下,请求将传给下一个服务器:
error
当与服务器建立连接、发送请求、读取响应头时,发生了一个错误
timeout
当与服务器建立连接、发送请求、读取响应头时,发生了超时
invalid_header
当服务器返回了一个空的或无效的响应
http_500
服务器返回500错误码
http_503
服务器返回503错误码
http_403
服务器返回403错误码
http_404
服务器返回404错误码
non_idempotent
通常情况下,如果请求已经发送到上游服务器,使用非幂等方法(POST、LOCK、PATCH)发送的请求不会被传递到下一个服务器上(1.9.13),启用这个选项允许重试这些请求。
off
禁用将请求传给下一个服务器的功能。
请牢记,将请求发送到下一个服务器只会在没有向客户端发送数据的前提下进行。也就是说,如果当错误或超时发生在传输响应内容期间,无法解决这个问题。
该指令同样定义了与服务器通信不成功尝试的含义。错误、超时、非法头总会被看做是不成功的尝试,及时没有定义在指令中。http_500、http_503只有在指令中定义后才会被视为不成功的尝试。http_403和http_404永远不会被视作不成功的尝试。
发送请求到下一个服务器可以由尝试次数和时间进行限制。

fastcgi_next_upstream_timeout

语法:fastcgi_next_upstream_timeout time
默认:fastcgi_next_upstream_timeout 0
上下文:http, server, location
版本:1.7.5+

限制多长时间后可以将请求传给下一个服务器,0代表关闭这个限制。

fastcgi_next_upstream_tries

语法:fastcgi_next_upstream_tries number
默认:fastcgi_next_upstream_tries 0
上下文:http, server, location
版本:1.7.5+

限制可以尝试请求的次数,然后发送到下一个服务器,0表示不限制。

fastcgi_no_cache

语法:fastcgi_no_cache string
默认:—
上下文:http, server, location

定义哪种情况下响应不会被缓存。如果string参数至少有一个值非空且不等于“0”,响应将不会被保存:

fastcgi_no_cache $cookie_nocache $arg_nocache$arg_comment;
fastcgi_no_cache $http_pragma    $http_authorization;

可以同fastcgi_cache_bypass指令一同使用。

fastcgi_param

语法:fastcgi_param parameter value [if_not_empty]
默认:—
上下文:http, server, location

设置传递给FastCGI服务器的参数。value包括文本、变量及他们的组合。当且仅当当前级别中没有fastcgi_param指令定义的情况下,这些指令会继承自上层等级。
下面的例子展示了PHP的最小设置:

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

SCRIPT_FILENAME参数在PHP中用于确定脚本名称,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参数进行编译,REDIRECT_STATUS参数应该同时以200值发送:
fastcgi_param REDIRECT_STATUS 200;
如果指令定义为if_not_empty(1.1.11+)那么如果该值为空,将不会发送到服务器:
fastcgi_param HTTPS $https if_not_empty;

fastcgi_pass

语法:fastcgi_pass address
默认:—
上下文:location, if in location

设置FastCGI服务器的地址,地址可以定义为域名或IP地址及端口号:
fastcgi_pass localhost:9000;
或者是一个UNIX-domain socket路径:
fastcgi_pass unix:/tmp/fastcgi.socket;
如果域名解析为多个地址,它们会通过轮询的方式使用。另外,地址可以定义成一个服务器组。

fastcgi_pass_header

语法:fastcgi_pass_header field
默认:—
上下文: http, server, location

允许一些头域从FastCGI服务器发送到客户端(主要用做fastcgi_hide_header的白名单)

fastcgi_pass_request_body

语法:fastcgi_pass_request_body on | off
默认:fastcgi_pass_request_body on
上下文:http, server, location

指示源请求体是否会被传递给FastCGI服务器。参见fastcgi_pass_request_headers指令。

fastcgi_pass_request_headers

语法:fastcgi_pass_request_headers on | off
默认:fastcgi_pass_request_headers on
上下文:http, server, location

指示源请求头是否传递给FastCGI服务器。参见fastcgi_pass_request_body指令。