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指令。

nginx中文文档-ngx_http_fastcgi_module(F-L)

本文档包含以下指令:fastcgi_force_ranges、fastcgi_hide_header、fastcgi_ignore_client_abort、fastcgi_ignore_headers、fastcgi_index、fastcgi_intercept_errors、fastcgi_keep_conn、fastcgi_limit_rate

fastcgi_force_ranges

语法:fastcgi_force_ranges on | off
默认:fastcgi_force_ranges off
上下文:http, server, location
版本:1.7.7+

同时为缓存和不缓存的FastCGI服务器响应开启byte-range支持,不管响应头中的“Accept-Ranges”。

fastcgi_hide_header

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

默认情况下,nginx不会传递来自FastCGI响应中的“Status”和“X-Accel-…”的信息给客户端。fastcgi_hide_header指令设置了其他不需要传递的头部信息。如果相反需要传递一些头部信息,可以使用fastcgi_pass_header指令。

fastcgi_ignore_client_abort

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

决定当客户端没有等待响应就断开了连接时,是否应该与FastCGI服务器关闭连接。

fastcgi_ignore_headers

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

禁用处理某个FastCGI服务器返回的响应头域。以下头域可以被忽略:“X-Accel-Redirect”、“X-Accel-Expires”、“X-Accel-Limit-Rate” (1.1.6+)、“X-Accel-Buffering” (1.1.6+)、“X-Accel-Charset” (1.1.6+)、“Expires”、“Cache-Control”、“Set-Cookie” (0.8.44+)和“Vary” (1.7.7+)。

如果没有禁用,处理这些头域会有如下的影响:

  • “X-Accel-Expires”、“Expires”、“Cache-Control”、“Set-Cookie”和“Vary”设置响应的缓存参数。
  • “X-Accel-Redirect”执行内部重定向到指定的URI
  • “X-Accel-Limit-Rate”设置响应给客户端的传输速率
  • “X-Accel-Buffering”开启或禁用响应的缓冲区
  • “X-Accel-Charset”设置响应的预期字符编码

fastcgi_index

语法:fastcgi_index name
默认:—
上下文:http, server, location

设置对于“/”结尾的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”

fastcgi_intercept_errors

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

决定当FastCGI服务器返回码大于等于300时,应该传给客户端还是重定向到nginx进行error_page指令的处理。

fastcgi_keep_conn

语法:fastcgi_keep_conn on | off
默认:fastcgi_keep_conn off
上下文:http, server, location
版本:1.1.4+

默认情况下,FastCGI将会在发送完响应后关闭连接。但是,当这个指令的值为on时,nginx将通知FastCGI服务器保持连接。这对于keepalive连接时必要的。

fastcgi_limit_rate

语法:fastcgi_limit_rate rate
默认:fastcgi_limit_rate 0
上下文:http, server, location
版本:1.7.7+

限制从FastCGI服务器读取响应的速度。速率以字节每秒定义,0值禁用限速功能。该限制为一个请求,如果nginx同时打开两个请求到FastCGI服务器,则总体速率为设置数值的两倍。只有在启用读取缓冲功能后限制才会起作用。