nginx中文文档-ngx_http_ssi_module

此页面版本:2016-06-08
ngx_http_ssi_module模块是一个过滤器,用于处理传给它的响应中的SSI(Server Side Includes)命令。目前支持的SSI命令列表还不完全。

示例配置

location / {
    ssi on;
    ...
}

ssi

语法:ssi on | off
默认:ssi off
上下文:http, server, location, if in location

启用或禁用处理响应中的SSI命令。

ssi_last_modified

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

在处理SSI时,允许保存原始响应头中的“Last-Modified”字段,以助于响应缓存。
默认情况下,这个头域会被移除,因为响应的内容在处理过程中会改变,也可能包含动态生成的元素或与原始响应独立改变的部分。

ssi_min_file_chunk

语法:ssi_min_file_chunk size
默认:ssi_min_file_chunk 1k
上下文:http, server, location

设置响应保存到磁盘上最小的部分大小,从这个值开始,会用sendfile发送。

ssi_silent_errors

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

如果启用,在SSI处理过程中发生了错误,会禁止输出“[an error occurred while processing the directive]”字符串。

ssi_types

语法:ssi_types mime-type
默认:ssi_types text/html
上下文:http, server, location

启用指定的除了“text/html”之外的MIME类型响应处理SSI命令。特殊值“*”匹配任何的MIME类型(0.8.29+)。

ssi_value_length

语法:ssi_value_length length
默认:ssi_value_length 256
上下文:http, server, location

设置SSI命令中最大的参数值长度。

SSI 命令
SSI命令有以下一般的格式:

下面的命令也支持:
block
定义一个块,用作include命令的存根。块可以包含其他SSI命令。命令可以由以下参数:
name
块名称
例子:


stub

config
设置在SSI处理过程中的一些参数:
errmsg
如果在SSI处理过程中发生错误,则输出这个字符串。默认情况下,以下字符串会被输出:
[an error occurred while processing the directive]
timefmt
传给strftime()函数的格式字符串用于输出日期和时间。默认情况下,使用下面的格式:
"%A, %d-%b-%Y %H:%M:%S %Z"
“%s”格式匹配输出时间的秒数

echo
输出变量的值,该命令有如下参数:
var
变量名称
encoding
编码方式。可能的值包含none,url和entity。默认情况下使用entity。
default
非标准参数用于设置当变量未定义时输出的字符串。默认情况下,输出“none”。命令

替换下面的命令:
no

if
条件包含。下面的命令受支持:


...

...

...

目前只支持一级嵌套。命令有以下参数:
expr
表达式,可以是:
变量存在性检测:

变量与值对比:



变量与正则表达式对比:



如果text包含变量,它们的值会被替代。正则表达式可以包含位置捕获和名称捕获,可以在后面通过变量使用,例如:


    
    

include
在响应中包含另一个请求的结果。该命令有以下参数:
file
指定一个包含文件,例如:

virtual
指定一个包含的请求,例如:

一个页面指定多个请求并由被代理服务器或FastCGI/uwsgi/SCGI服务器并行处理。如果希望串行处理,使用wait参数。
stub
非标准参数用于命名将被输出的块,这些块在包含的请求结果为空或处理请求过程中出现错误时会被输出,例如:

 

替换块的内容会在包含请求的上下文中处理。
wait
非标准参数,在一个请求完全完成前进行等待,例如:

set
非标准参数,成功的请求处理结果写到指定变量中,例如:

需要注意,只有使用ngx_http_proxy_module, ngx_http_memcached_module, ngx_http_fastcgi_module (1.5.6+), ngx_http_uwsgi_module (1.5.6+)以及 ngx_http_scgi_module (1.5.6+) 模块获得的响应结果可以写进变量。

set
设置变量的值,命令可以包含以下参数:
var
变量名
value
变量值。如果赋值包含变量,它们的值会被替代。

内嵌变量
ngx_http_ssi_module模块支持两个内嵌变量:


$date_local
当前时区下的时间。格式由config命令的timefmt参数指定。


$date_gmt
GMT的当前时间。格式由config命令的timefmt参数指定。