|
Модуль ngx_http_ssi_module — фильтр, обрабатывающий команды SSI (Server
Side Includes) в проходящих через него ответах.
На данный момент список поддерживаемых команд SSI неполон.
Пример конфигурации
location / {
ssi on;
...
}
Директивы
|
синтаксис:
|
ssi on | off;
|
|
умолчание:
|
ssi off;
|
|
контекст:
|
http, server, location, if в location
|
Директива разрешает обработку команд SSI в ответах.
|
синтаксис:
|
ssi_silent_errors on | off;
|
|
умолчание:
|
ssi_silent_errors off;
|
|
контекст:
|
http, server, location
|
Директива разрешает не выводить строку
"[an error occurred while processing the directive]",
если во время обработки SSI произошла ошибка.
|
синтаксис:
|
ssi_types mime-тип ...;
|
|
умолчание:
|
ssi_types text/html;
|
|
контекст:
|
http, server, location
|
Разрешает обработку команд SSI в ответах с указанными MIME-типами в дополнение
к "text/html".
Команды SSI
Формат команды следующий
<!--# команда параметр1=значение параметр2=значение ... -->
Ниже перечислены поддерживаемые команды:
-
block — команда описывает блок, который можно использовать
как заглушку в команде include.
Внутри блока могут быть команды SSI.
Пример использования:
<!--# block name="one" -->
заглушка
<!--# 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 — имя переменной.
-
encoding — способ кодирования.
Возможны три значения — none, url и entity.
По умолчанию используется entity.
-
default — нестандартный параметр, задающий строку,
которая выводится, если переменная не определена.
По умолчанию выводится строка "none". Команда
<!--# echo var="name" default="нет" -->
заменяет такую последовательность команд
<!--# if expr="$name" --><!--# echo var="name" --><!--#
else -->нет<!--# endif -->
-
if — команда выполняет условное включение.
Поддерживаются следующие команды:
<!--# 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/" -->
Если в text встречаются переменные, то производится подстановка их значений.
В регулярном выражении можно задать позиционные и именованные выделения,
а затем использовать их через переменные:
<!--# if expr="$name = /(.+)@(?P<domain>.+)/" -->
<!--# echo var="1" -->
<!--# echo var="domain" -->
<!--# endif -->
-
include — команда включает в ответ результат другого запроса.
-
file — задаёт включаемый файл, например:
<!--# include file="footer.html" -->
-
virtual — задаёт включаемый запрос, например:
<!--# include virtual="/remote/body.php?argument=value" -->
Несколько запросов на одной странице, обрабатываемые через прокси или FastCGI,
работают параллельно. Если нужно последовательная обработка, то нужно
воспользоваться параметром wait.
-
stub — нестандартный параметр, задающий имя блока,
содержимое которого будет выведено, если тело ответа на включаемый запрос
пустое или при исполнении запроса произошла ошибка, например:
<!--# block name="one" --> <!--# endblock -->
<!--# include virtual="/remote/body.php?argument=value" stub="one" -->
при этом содержимое замещающего блока обрабатывается в контексте включаемого
запроса.
-
wait — нестандартный параметр, указывающий, нужно ли ждать
полного исполнения данного запроса, прежде чем продолжать выполнение
SSI, например:
<!--# include virtual="/remote/body.php?argument=value" wait="yes" -->
-
set — нестандартный параметр, указывающий, что удачный
результат выполнения запроса нужно записать в заданную переменную,
например:
<!--# include virtual="/remote/body.php?argument=value" set="one" -->
Необходимо учитывать, что в переменные можно записать только результаты
ответов, полученные через модули
ngx_http_proxy_module и ngx_http_memcached_module.
-
set — команда присваивает значение переменной.
-
var — имя переменной.
-
value — значение переменной. Если в присваиваемом значении
есть переменные, то производится подстановка их значений.
Встроенные переменные
Модуль ngx_http_ssi_module поддерживает две встроенные переменные:
-
$date_local, эта переменная равна текущему времени в локальной временной зоне.
Формат даты задаётся командой config с параметром timefmt.
-
$date_gmt, эта переменная равна текущему времени в GMT.
Формат даты задаётся командой config с параметром timefmt.
|