Модуль ngx_http_ssi_module
Пример конфигурации Директивы ssi ssi_last_modified ssi_min_file_chunk ssi_silent_errors ssi_types ssi_value_length Команды SSI Встроенные переменные |
Модуль ngx_http_ssi_module
— это фильтр,
обрабатывающий команды SSI (Server Side Includes) в проходящих
через него ответах.
На данный момент список поддерживаемых команд SSI неполон.
Пример конфигурации
location / { ssi on; ... }
Директивы
Синтаксис: |
ssi |
---|---|
Умолчание: |
ssi off; |
Контекст: |
http , server , location , if в location |
Разрешает или запрещает обработку команд SSI в ответах.
Синтаксис: |
ssi_last_modified |
---|---|
Умолчание: |
ssi_last_modified off; |
Контекст: |
http , server , location |
Эта директива появилась в версии 1.5.1.
Позволяет сохранить поле заголовка “Last-Modified” исходного ответа во время обработки SSI для лучшего кэширования ответов.
По умолчанию поле заголовка удаляется, так как содержимое ответа изменяется во время обработки и может содержать динамически созданные элементы или части, которые изменились независимо от исходного ответа.
Синтаксис: |
ssi_min_file_chunk |
---|---|
Умолчание: |
ssi_min_file_chunk 1k; |
Контекст: |
http , server , location |
Задаёт минимальный размер
частей ответа, хранящихся
на диске, начиная с которого имеет смысл посылать их с помощью
sendfile.
Синтаксис: |
ssi_silent_errors |
---|---|
Умолчание: |
ssi_silent_errors off; |
Контекст: |
http , server , location |
Разрешает не выводить строку
“[an error occurred while processing the directive]
”,
если во время обработки SSI произошла ошибка.
Синтаксис: |
ssi_types |
---|---|
Умолчание: |
ssi_types text/html; |
Контекст: |
http , server , location |
Разрешает обработку команд SSI в ответах с указанными MIME-типами
в дополнение к “text/html
”.
Специальное значение “*
” соответствует любому MIME-типу
(0.8.29).
Синтаксис: |
ssi_value_length |
---|---|
Умолчание: |
ssi_value_length 256; |
Контекст: |
http , server , location |
Задаёт максимальную длину значений параметров в SSI-командах.
Команды SSI
Общий формат команд SSI такой:
<!--# команда параметр1=значение1 параметр2=значение2 ... -->
Поддерживаются следующие команды:
block
-
Описывает блок, который можно использовать
как заглушку в команде
include
. Внутри блока могут быть другие команды SSI. Параметр команды:name
- имя блока.
<!--# block name="one" --> заглушка <!--# endblock -->
config
-
Задаёт некоторые параметры, используемые при обработке SSI, а именно:
errmsg
-
строка, выводящаяся при ошибке во время обработки SSI.
По умолчанию выводится такая строка:
[an error occurred while processing the directive]
timefmt
-
строка формата, передаваемая функции
strftime()
для вывода даты и времени. По умолчанию используется такой формат:
Для вывода времени в секундах подходит формат “"%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
-
задаёт включаемый запрос, например:
Несколько запросов, указанных на одной странице и обрабатываемых проксируемыми или FastCGI/uwsgi/SCGI/gRPC-серверами, работают параллельно. Если нужна последовательная обработка, следует воспользоваться параметром<!--# include virtual="/remote/body.php?argument=value" -->
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
-
нестандартный параметр, указывающий, что удачный
результат выполнения запроса нужно записать в заданную переменную,
например:
Максимальный размер ответа задаётся директивой subrequest_output_buffer_size (1.13.10):<!--# include virtual="/remote/body.php?argument=value" set="one" -->
До версии 1.13.10 в переменные можно было записать только результаты ответов, полученные через модули ngx_http_proxy_module, ngx_http_memcached_module, ngx_http_fastcgi_module (1.5.6), ngx_http_uwsgi_module (1.5.6) и ngx_http_scgi_module (1.5.6). Максимальный размер ответа задавался при помощи директив proxy_buffer_size, memcached_buffer_size, fastcgi_buffer_size, uwsgi_buffer_size и scgi_buffer_size.location /remote/ { subrequest_output_buffer_size 64k; ... }
set
-
Присваивает значение переменной.
Параметры команды:
var
- имя переменной.
value
- значение переменной. Если в присваиваемом значении есть переменные, то производится подстановка их значений.
Встроенные переменные
Модуль ngx_http_ssi_module
поддерживает
две встроенные переменные:
$date_local
-
текущее время в локальной временной зоне.
Формат задаётся командой
config
с параметромtimefmt
. $date_gmt
-
текущее время в GMT.
Формат задаётся командой
config
с параметромtimefmt
.