Модуль 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 on | off; |
|---|---|
| Значение по умолчанию: | ssi off; |
| Контекст: | http, server, location, if in location |
Включает или отключает обработку команд SSI в ответах.
| Синтаксис: | ssi_last_modified on | off; |
|---|---|
| Значение по умолчанию: | ssi_last_modified off; |
| Контекст: | http, server, location |
Данная директива появилась в версии 1.5.1.
Позволяет сохранить заголовок «Last-Modified» из исходного ответа при обработке SSI для облегчения кэширования ответа.
По умолчанию заголовок удаляется, так как содержимое ответа изменяется во время обработки и может содержать динамически сгенерированные элементы или части, которые изменяются независимо от исходного ответа.
| Синтаксис: | ssi_min_file_chunk size; |
|---|---|
| Значение по умолчанию: | ssi_min_file_chunk 1k; |
| Контекст: | http, server, location |
Устанавливает минимальный size для частей ответа, хранящихся на диске, начиная с которого имеет смысл отправлять их с помощью sendfile.
| Синтаксис: | ssi_silent_errors on | off; |
|---|---|
| Значение по умолчанию: | ssi_silent_errors off; |
| Контекст: | http, server, location |
При включении подавляет вывод строки «[an error occurred while processing the directive]» в случае возникновения ошибки при обработке SSI.
| Синтаксис: | ssi_types mime-type ...; |
|---|---|
| Значение по умолчанию: | ssi_types text/html; |
| Контекст: | http, server, location |
Включает обработку команд SSI в ответах с указанными MIME-типами в дополнение к «text/html». Специальное значение «*» соответствует любому MIME-типу (0.8.29).
| Синтаксис: | ssi_value_length length; |
|---|---|
| Значение по умолчанию: | ssi_value_length 256; |
| Контекст: | http, server, location |
Устанавливает максимальную длину значений параметров в командах SSI.
Команды SSI
Команды SSI имеют следующий общий формат:
<!--# command parameter1=value1 parameter2=value2 ... -->
Поддерживаются следующие команды:
block- Определяет блок, который можно использовать в качестве заглушки в команде
include. Блок может содержать другие команды SSI. Команда имеет следующий параметр:name- имя блока.
<!--# block name="one" --> stub <!--# 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="no" -->
заменяет следующую последовательность команд:<!--# if expr="$name" --><!--# echo var="name" --><!--# else -->no<!--# 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/uwsgi/SCGI/gRPC, выполняются параллельно. Если требуется последовательная обработка, следует использовать параметр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" -->
Максимальный размер ответа устанавливается директивой subrequest_output_buffer_size (1.13.10):location /remote/ { subrequest_output_buffer_size 64k; ... }До версии 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.
set- Устанавливает значение переменной. Команда имеет следующие параметры:
var- имя переменной.
value- значение переменной. Если присвоенное значение содержит переменные, их значения подставляются.
Встроенные переменные
Модуль ngx_http_ssi_module поддерживает две встроенные переменные:
$date_local- текущее время в местном часовом поясе. Формат устанавливается командой
configс параметромtimefmt. $date_gmt- текущее время в GMT. Формат устанавливается командой
configс параметромtimefmt.
© 2002-2021 Igor Sysoev
© 2011-2024 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/http/ngx_http_ssi_module.html