Nginx配置中的SSI
作用域: location | server | location | location 的 if 中
ssi [on | off];
ssi_silent_errors [on | off];
#如果在处理SSI的过程中出现“[an error occurred while processing the directive]”错误,禁止将其输出。
ssi_types mime-type [mime-type ...]
#解析 ssi 的类型
ssi_value_length length
#默认256 允许SSI使用的参数值的长度
SSI 命令
命令格式如下:
<!--# command parameter1=value parameter2=value...parameterN=value --> > (#)前面必须以两个-开头 支持的SSI命令如下:
block
命令描述一个可以在include命令中使用的块,在块中可以存在SSI命令。
name - 块的名称,如: <!--# block name="one" > the silencer <!--# endblock --> config
为SSI指定一些配置参数。
errmsg - 在SSI处理过程中得到的错误字段,默认字符串为:[an error occurred while processing the directive]。 timefmt - 时间字符串的格式,strftime(3)函数使用,默 认为: "%A, %d-%b-%Y %H:%M:%S %Z" 在时间中包含秒可以使用“%s”
echo
打印一个变量。
var - 变量的名称。 default - 如果变量为空,则显示这个字符串,默认为“none”。
如: <!--# echo var="name" default="no" > 与下列等效:
<!--# if expr="$name" ><!--# echo var="name" ><!--# else >no<!--# endif > if/elif/else/endif
根据条件包含其他字段或者指令,用法:
<!--# if expr="..." > ... <!--# elif expr="..." > ... <!--# else > ... <!--# endif > 上述例子中只有一个嵌套为真。
expr - 判定一个表达式,可以是变量: <!--# if expr="$name" > 比较字符串:
<!--# if expr="$name = text" > <!--# if expr="$name != text" > 或者匹配正则:
<!--# if expr="$name = /text/" > <!--# if expr="$name != /text/" > 如果使用变量,则用他们的值代替。
include
包含一个其他来源的记录。
file
包含一个文件,如: <!--# include file=" footer.html" > virtual - 包含一个请求,
如: <!--# include virtual="/remote/body.php?argument=value" >
file或者virtual包含的文件必须在server中配置为一个location。
“file”和”virtual”主要是一些历史性的差别,”file”等同于带”wait”选项的”virtual”,但是现在他们基本都处理同样的操作,都可以处理一个URI或者一个静态文件。
如果有多个请求它们将并行发出,如果需要按顺序发出,请使用“wait”选项\
stub
如果请求为空或返回一个错误后使用的默认块。
<!--# block name="one" > <!--# endblock > <!--# include virtual="/remote/body.php?argument=value" stub="one" >\
wait
当设置为yes时,在当前的请求未完成之前剩余的SSI不会进行判定, 例如: <!--# include virtual="/remote/body.php?argument=value" wait="yes" >
set
设置一个变量。
var
变量。
value - 包含变量名变量的值,它们将被判定。 变量
$date_local
本地时区的当前时间,选项 “timefmt”可以指定格式。
$date_gmt
当前的格林尼治时间,选项 “timefmt”可以指定格式。