nginx中文文档-ngx_http_fastcgi_module(R-T)

本文档包含以下指令:fastcgi_read_timeout、fastcgi_request_buffering、fastcgi_send_lowat、fastcgi_send_timeout、fastcgi_split_path_info、fastcgi_store、fastcgi_store_access、fastcgi_temp_file_write_size、fastcgi_temp_path

fastcgi_read_timeout

语法:fastcgi_read_timeout time
默认:fastcgi_read_timeout 60s
上下文:http, server, location

定义从FastCGI服务器读取响应的超时时间。超时时间只是在两个成功的读操作之间而不是整个响应的传输。如果在此期间FastCGI服务器没有传输任何数据,连接将会关闭。

fastcgi_request_buffering

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

启用或禁用客户端请求主体的缓冲区。
当缓冲区开启时,在发送到FastCGI服务器之前,客户端请求主体的全部内容将会被读取。
当缓冲区禁用时,收到请求主体后立即发送到FastCGI服务器上。这种情况下,如果nginx已经发送了请求主体到FastCGI服务器,请求就不能再传给下一个服务器了。

fastcgi_send_lowat

语法:fastcgi_send_lowat size
默认:fastcgi_send_lowat 0
上下文:http, server, location

如果指令设置了非零值,nginx将尝试通过kqueue方法的NOTE_LOWAT标志位或SO_SNDLOWAT socket选项降低连接到FastCGI服务器的发送操作数。
该指令在Linux、Solaris和Windows系统上被忽略。

fastcgi_send_timeout

语法:fastcgi_send_timeout time
默认:fastcgi_send_timeout 60s
上下文:http, server, location

设置发送请求到FastCGI服务器的超时时间,超时时间作用于两次成功的写操作之间,而不是整个请求的传输。如果在这期间FastCGI服务器没有收到任何数据,则连接会被关闭。

fastcgi_split_path_info

语法:fastcgi_split_path_info regex
默认:—
上下文:location

定义一个正则表达式,为$fastcgi_path_info变量捕获数值。正则表达式应该有两个捕获,第一个是$fastcgi_script_name变量,第二个是$fastcgi_path_info变量。例如,这个配置中:

location ~ ^(.+\.php)(.*)$ {
    fastcgi_split_path_info       ^(.+\.php)(.*)$;
    fastcgi_param SCRIPT_FILENAME /path/to/php$fastcgi_script_name;
    fastcgi_param PATH_INFO       $fastcgi_path_info;

对于“/show.php/article/0001”请求,SCRIPT_FILENAME等于“/path/to/php/show.php”,PATH_INFO等于“/article/0001”

fastcgi_store

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

启用将文件保存到磁盘的功能。on参数将保存文件到root和alias指令指定的相关路径下。off参数禁用保存文件功能。另外,文件名可以通过带变量的string参数显式的指定:
fastcgi_store /data/www$original_uri;
文件的修改时间会依据响应头中的“Last-Modified”字段。响应会先保存到临时文件中,然后重命名。从0.8.9版本开始,临时文件和持久化储存文件可以在不同的文件系统中。但是,需要明白的是,这种情况下会在两个不同的文件系统上复制文件,而不是代价低的重命名。建议通过fastcgi_temp_path指令将临时文件和持久储存文件定位在同一个路径下。
这个指令可以用于创建不改变的静态文件的本地副本:

location /images/ {
    root                 /data/www;
    error_page           404 = /fetch$uri;
}

location /fetch/ {
    internal;

    fastcgi_pass         backend:9000;
    ...

    fastcgi_store        on;
    fastcgi_store_access user:rw group:rw all:r;
    fastcgi_temp_path    /data/temp;

    alias                /data/www/;
}

fastcgi_store_access

语法:fastcgi_store_access users:permissions
默认:fastcgi_store_access user:rw
上下文:http, server, location

设置新建的文件的访问权限:
fastcgi_store_access user:rw group:rw all:r;
如果定义了group或all的权限,user权限可以省略:
fastcgi_store_access group:rw all:r;

fastcgi_temp_file_write_size

语法:fastcgi_temp_file_write_size size
默认:fastcgi_temp_file_write_size 8k|16k
上下文:http, server, location

当启用了从FastCGI服务器接收请求的缓冲区写入到临时文件功能时,限制一次写入到临时文件的数据大小。默认情况下,大小由fastcgi_buffer_size和fastcgi_buffers指令设置的两个缓冲区限制。临时文件大小最大值由fastcgi_max_temp_file_size指令设置。

fastcgi_temp_path

语法:fastcgi_temp_path path [level1 [level2 [level3]]]
默认:fastcgi_temp_path fastcgi_temp
上下文:http, server, location

定义从FastCGI服务器接收响应存储到临时目录的位置。
超过三级的子目录层级可以用在指定目录下。例如下面的配置:
fastcgi_temp_path /spool/nginx/fastcgi_temp 1 2;
临时文件类似于:
/spool/nginx/fastcgi_temp/7/45/00000123457
参见fastcgi_cache_path指令的use_temp_path参数

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