Персональный
сайт
Игоря
Сысоева


 
english
 
sysoev.ru
 
nginx
 поехали!    
 документация    
 поддержка    
 изменения    
 скачать    
 ссылки    
 
mod_accel
mod_realip
mod_deflate
программирование
всякая всячина
windows
freebsd
apache
pppd
unix
web
 
обо мне
для писем
для денег
 

Директивы модуля 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, uri и 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" -->&nbsp;<!--# 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