nginx http_fastcgi模块内嵌变量

此页面版本:2016-06-15
本文介绍nginx的http_fastcgi模块的内嵌变量

ngx_http_fastcgi_module模块支持内嵌变量,可以将它们用在fastcgi_param指令设置的参数中:

$fastcgi_script_name

请求URI或在请求URI以“/”结尾时,将fastcgi_index指令设置的索引文件添加到URI后面的值。变量可以用于设置SCRIPT_FILENAME和PATH_TRANSLATED参数,它们决定了PHP中脚本的名称。例如,请求“/info/”与下面的指令:

fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;

SCRIPT_FILENAME参数将等于“/home/www/scripts/php/info/index.php”。
当使用fastcgi_split_path_info指令时,$fastcgi_script_name变量等于指令中第一个捕获的值。


$fastcgi_path_info

fastcgi_split_path_info指令设置的第二个捕获的值,该变量可以用于设置PATH_INFO参数。

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参数