SSI#
Фильтр, обрабатывающий команды SSI (Server Side Includes) в проходящих через него ответах. Разрешает или запрещает обработку команд SSI в ответах. По умолчанию http, server, location Позволяет сохранить поле заголовка "Last-Modified" исходного ответа во время обработки SSI для лучшего кэширования ответов. По умолчанию поле заголовка удаляется, так как содержимое ответа изменяется во время обработки и может содержать динамически созданные элементы или части, которые изменились независимо от исходного ответа. Задает минимальный размер частей ответа, хранящихся на диске, начиная с которого имеет смысл посылать их с помощью sendfile. По умолчанию http, server, location Разрешает не выводить строку "[an error occurred while processing the directive]", если во время обработки SSI произошла ошибка. Разрешает обработку команд SSI в ответах с указанными MIME-типами в дополнение к "text/html". Специальное значение "*" соответствует любому MIME-типу. Задает максимальную длину значений параметров в SSI-командах. Общий формат команд SSI такой: Поддерживаются следующие команды: Описывает блок, который можно использовать как заглушку в команде include. Внутри блока могут быть другие команды SSI. Параметр команды: имя блока. Пример: Задает некоторые параметры, используемые при обработке SSI, а именно: строка, выводящаяся при ошибке во время обработки SSI. По умолчанию выводится такая строка: [an error occurred while processing the directive] строка формата, передаваемая функции strftime() для вывода даты и времени. По умолчанию используется такой формат: "%A, %d-%b-%Y %H:%M:%S %Z" Для вывода времени в секундах подходит формат "%s". Выводит значение переменной. Параметры команды: имя переменной. способ кодирования. Возможны три значения — none, url и entity. нестандартный параметр, задающий строку, которая выводится, если переменная не определена. Команда заменяет такую последовательность команд: Выполняет условное включение. Поддерживаются следующие команды: На данный момент поддерживается только один уровень вложенности. Параметр команды: выражение. В выражении может быть: проверка существования переменной: сравнение переменной с текстом: сравнение переменной с регулярным выражением: Если в text встречаются переменные, то производится подстановка их значений. В регулярном выражении можно задать позиционные и именованные выделения, а затем использовать их через переменные, например: Включает в ответ результат другого запроса. Параметры команды: задает включаемый файл, например: задает включаемый запрос, например: Несколько запросов, указанных на одной странице и обрабатываемых проксируемыми или FastCGI/uwsgi/SCGI/gRPC-серверами, работают параллельно. Если нужна последовательная обработка, следует воспользоваться параметром wait. нестандартный параметр, задающий имя блока, содержимое которого будет выведено, если тело ответа на включаемый запрос пустое или если при исполнении запроса произошла ошибка, например: Содержимое замещающего блока обрабатывается в контексте включаемого запроса. нестандартный параметр, указывающий, нужно ли ждать полного исполнения данного запроса, прежде чем продолжать выполнение SSI, например: нестандартный параметр, указывающий, что удачный результат выполнения запроса нужно записать в заданную переменную, например: Максимальный размер ответа задается директивой subrequest_output_buffer_size: Присваивает значение переменной. Параметры команды: имя переменной. значение переменной. Если в присваиваемом значении есть переменные, то производится подстановка их значений. текущее время в локальной временной зоне. Формат задается командой config с параметром timefmt. текущее время в GMT. Формат задается командой config с параметром timefmt.Пример конфигурации#
location / {
ssi on;
# ...
}
Директивы#
ssi#
ssi_last_modified#
ssi_last_modified
on
| off
;ssi_last_modified off;
ssi_min_file_chunk#
ssi_silent_errors#
ssi_silent_errors
on
| off
;ssi_silent_errors off;
ssi_types#
ssi_value_length#
Команды SSI#
<!--# команда параметр1=значение1 параметр2=значение2 ... -->
block
#name
#<!--# block name="one" -->
заглушка
<!--# endblock -->
config
#errmsg
#timefmt
#echo
#var
#encoding
#
По умолчанию используется 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/" -->
<!--# 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" -->
stub
#<!--# block name="one" --> <!--# endblock -->
<!--# include virtual="/remote/body.php?argument=value" stub="one" -->
wait
#<!--# include virtual="/remote/body.php?argument=value" wait="yes" -->
set
#<!--# include virtual="/remote/body.php?argument=value" set="one" -->
location /remote/ {
subrequest_output_buffer_size 64k;
# ...
}
set
#var
#value
#Встроенные переменные#
$date_local
#$date_gmt
#