Spec-Zone.ru › nginx

Модуль 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" -->&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" -->
Максимальный размер ответа устанавливается директивой 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API