SSI模块(SSI)


·摘要

这个模块为处理服务器端包含(SSI)的输入提供一个过滤器,目前所支持的SSI命令并不完善。
如下例:
location / {
  ssi  on;
}

·指令

ssi

语法:ssi [ on | off ]
默认值:ssi off
使用字段:http, server, location, location中的if字段
启用SSI处理。
注意如果启用SSI,那么Last-Modified头和Content-Length头不会传递。

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 [mime-type ...]
默认值:ssi_types text/html
使用字段:http, server, location
默认只解析text/html类型,这个参数可以指定其他的MIME类型。

ssi_value_length

语法:ssi_value_length length
默认值:ssi_value_length 256
使用字段:http, server, location
定义允许SSI使用的参数值的长度。

SSI 命令

命令格式如下:
  <!--#  command parameter1=value parameter2=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"主要是一些历史性的差别,"file"等同于暗示"wait"选项的"virtual",在某点上反映与apache等值,但是现在他们基本都处理同样的操作,都可以处理一个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"可以指定格式。

·参考文档

Original Documentation
Nginx Http SSI Module

前进->User ID模块(User ID)