Директивы модуля ngx_http_ssi_module

nginx


english
עברית
日本語
русский
türkçe

новости [en]

об nginx
скачать
безопасность [en]
pgp ключи [en]
документация
введение [en]
howto
faq
trac
wiki
ссылки [en]
книги [en]
поддержка
пожертвования [en]
nginx.com
Пример конфигурации
Директивы
     ssi
     ssi_silent_errors
     ssi_types
Команды SSI
Встроенные переменные

Модуль 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.
    • 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 встречаются переменные, то производится подстановка их значений. В регулярном выражении можно задать позиционные и именованные выделения, а затем использовать их через переменные:
      <!--# 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" -->&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.