Директивы модуля ngx_http_ssi_module 15.10.2007
Модуль ngx_http_ssi_module фильтр, обрабатывающий команды SSI (Server
Side Includes) в проходящих через него ответах.
На данный момент список поддерживаемых команд SSI неполон.
СодержаниеПример конфигурации Директивы- ssi
- ssi_silent_errors
- ssi_types
Команды SSI Встроенные переменные
Пример конфигурации
location / {
ssi on;
...
}
Директивы syntax: ssi [on|off] default: ssi off context: http, server, location, if в location
Директива разрешает обработку команд SSI в ответах.
syntax: ssi_silent_errors [on|off] default: ssi_silent_errors off context: http, server, location
Директива разрешает не выводить строку
"[an error occurred while processing the directive]",
если во время обработки SSI произошла ошибка.
syntax: ssi_types mime-тип [mime-тип ...] default: ssi_types text/html context: http, server, location
Разрешает обработку команд SSI в ответах с указанными MIME-типами в дополнение
к "text/html".
Команды SSI
Формат команды следующий
<!--# команда параметр1=значение параметр2=значение ... -->
Ниже перечислены поддерживаемые команды:
- block команда описывает блок, который можно использовать
как заглушку в команде include.
Внутри блока могут быть команды SSI.
- name имя блока.
Пример использования:
<!--# 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 встречаются переменные, то производится подстановка их значений.
- 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.
(C) Игорь Сысоев http://sysoev.ru |