Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nginx
GitHub Repository: nginx/nginx.org
Path: blob/main/xml/ru/docs/http/ngx_http_ssi_module.xml
1 views
1
<?xml version="1.0"?>
2
3
<!--
4
Copyright (C) Igor Sysoev
5
Copyright (C) Nginx, Inc.
6
-->
7
8
<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
9
10
<module name="Модуль ngx_http_ssi_module"
11
link="/ru/docs/http/ngx_http_ssi_module.html"
12
lang="ru"
13
rev="12">
14
15
<section id="summary">
16
17
<para>
18
Модуль <literal>ngx_http_ssi_module</literal> — это фильтр,
19
обрабатывающий команды SSI (Server Side Includes) в проходящих
20
через него ответах.
21
На данный момент список поддерживаемых команд SSI неполон.
22
</para>
23
24
</section>
25
26
27
<section id="example" name="Пример конфигурации">
28
29
<para>
30
<example>
31
location / {
32
ssi on;
33
...
34
}
35
</example>
36
</para>
37
38
</section>
39
40
41
<section id="directives" name="Директивы">
42
43
<directive name="ssi">
44
<syntax><literal>on</literal> | <literal>off</literal></syntax>
45
<default>off</default>
46
<context>http</context>
47
<context>server</context>
48
<context>location</context>
49
<context>if в location</context>
50
51
<para>
52
Разрешает или запрещает обработку команд SSI в ответах.
53
</para>
54
55
</directive>
56
57
58
<directive name="ssi_last_modified">
59
<syntax><literal>on</literal> | <literal>off</literal></syntax>
60
<default>off</default>
61
<context>http</context>
62
<context>server</context>
63
<context>location</context>
64
<appeared-in>1.5.1</appeared-in>
65
66
<para>
67
Позволяет сохранить поле заголовка <header>Last-Modified</header>
68
исходного ответа во время обработки SSI
69
для лучшего кэширования ответов.
70
</para>
71
72
<para>
73
По умолчанию поле заголовка удаляется, так как содержимое ответа
74
изменяется во время обработки и может содержать динамически созданные
75
элементы или части, которые изменились независимо от исходного ответа.
76
</para>
77
78
</directive>
79
80
81
<directive name="ssi_min_file_chunk">
82
<syntax><literal>размер</literal></syntax>
83
<default>1k</default>
84
<context>http</context>
85
<context>server</context>
86
<context>location</context>
87
88
<para>
89
Задаёт минимальный <value>размер</value> частей ответа, хранящихся
90
на диске, начиная с которого имеет смысл посылать их с помощью
91
<link doc="ngx_http_core_module.xml" id="sendfile"/>.
92
</para>
93
94
</directive>
95
96
97
<directive name="ssi_silent_errors">
98
<syntax><literal>on</literal> | <literal>off</literal></syntax>
99
<default>off</default>
100
<context>http</context>
101
<context>server</context>
102
<context>location</context>
103
104
<para>
105
Разрешает не выводить строку
106
<literal>[an error occurred while processing the directive]</literal>”,
107
если во время обработки SSI произошла ошибка.
108
</para>
109
110
</directive>
111
112
113
<directive name="ssi_types">
114
<syntax><value>mime-тип</value> ...</syntax>
115
<default>text/html</default>
116
<context>http</context>
117
<context>server</context>
118
<context>location</context>
119
120
<para>
121
Разрешает обработку команд SSI в ответах с указанными MIME-типами
122
в дополнение к “<literal>text/html</literal>”.
123
Специальное значение “<literal>*</literal>” соответствует любому MIME-типу
124
(0.8.29).
125
</para>
126
127
</directive>
128
129
130
<directive name="ssi_value_length">
131
<syntax><value>длина</value></syntax>
132
<default>256</default>
133
<context>http</context>
134
<context>server</context>
135
<context>location</context>
136
137
<para>
138
Задаёт максимальную длину значений параметров в SSI-командах.
139
</para>
140
141
</directive>
142
143
</section>
144
145
146
<section id="commands" name="Команды SSI">
147
148
<para>
149
Общий формат команд SSI такой:
150
<example>
151
&lt;!--# команда параметр1=значение1 параметр2=значение2 ... --&gt;
152
</example>
153
</para>
154
155
<para>
156
Поддерживаются следующие команды:
157
<list type="tag">
158
159
<tag-name><literal>block</literal></tag-name>
160
<tag-desc>
161
Описывает блок, который можно использовать
162
как заглушку в команде <literal>include</literal>.
163
Внутри блока могут быть другие команды SSI.
164
Параметр команды:
165
166
<list type="tag">
167
<tag-name><literal>name</literal></tag-name>
168
<tag-desc>
169
имя блока.
170
</tag-desc>
171
</list>
172
173
Пример:
174
<example>
175
&lt;!--# block name="one" --&gt;
176
заглушка
177
&lt;!--# endblock --&gt;
178
</example>
179
180
</tag-desc>
181
182
183
<tag-name><literal>config</literal></tag-name>
184
<tag-desc>
185
Задаёт некоторые параметры, используемые при обработке SSI, а именно:
186
187
<list type="tag">
188
<tag-name><literal>errmsg</literal></tag-name>
189
<tag-desc>
190
строка, выводящаяся при ошибке во время обработки SSI.
191
По умолчанию выводится такая строка:
192
<example>
193
[an error occurred while processing the directive]
194
</example>
195
</tag-desc>
196
197
<tag-name><literal>timefmt</literal></tag-name>
198
<tag-desc>
199
строка формата, передаваемая функции <c-func>strftime</c-func>
200
для вывода даты и времени.
201
По умолчанию используется такой формат:
202
<example>
203
"%A, %d-%b-%Y %H:%M:%S %Z"
204
</example>
205
Для вывода времени в секундах подходит формат
206
<literal>%s</literal>”.
207
</tag-desc>
208
</list>
209
210
</tag-desc>
211
212
213
<tag-name><literal>echo</literal></tag-name>
214
<tag-desc>
215
Выводит значение переменной.
216
Параметры команды:
217
218
<list type="tag">
219
<tag-name><literal>var</literal></tag-name>
220
<tag-desc>
221
имя переменной.
222
</tag-desc>
223
224
<tag-name><literal>encoding</literal></tag-name>
225
<tag-desc>
226
способ кодирования.
227
Возможны три значения — <literal>none</literal>, <literal>url</literal> и
228
<literal>entity</literal>.
229
По умолчанию используется <literal>entity</literal>.
230
</tag-desc>
231
232
<tag-name><literal>default</literal></tag-name>
233
<tag-desc>
234
нестандартный параметр, задающий строку, которая выводится,
235
если переменная не определена.
236
По умолчанию выводится строка
237
<literal>(none)</literal>”.
238
Команда
239
<example>
240
&lt;!--# echo var="name" default="<emphasis>нет</emphasis>" --&gt;
241
</example>
242
заменяет такую последовательность команд:
243
<example>
244
&lt;!--# if expr="$name" --&gt;&lt;!--# echo var="name" --&gt;&lt;!--#
245
else --&gt;<emphasis>нет</emphasis>&lt;!--# endif --&gt;
246
</example>
247
</tag-desc>
248
</list>
249
250
</tag-desc>
251
252
253
<tag-name><literal>if</literal></tag-name>
254
<tag-desc>
255
Выполняет условное включение.
256
Поддерживаются следующие команды:
257
<example>
258
&lt;!--# if expr="..." --&gt;
259
...
260
&lt;!--# elif expr="..." --&gt;
261
...
262
&lt;!--# else --&gt;
263
...
264
&lt;!--# endif --&gt;
265
</example>
266
На данный момент поддерживается только один уровень вложенности.
267
Параметр команды:
268
269
<list type="tag">
270
<tag-name><literal>expr</literal></tag-name>
271
<tag-desc>
272
выражение.
273
В выражении может быть:
274
275
<list type="bullet">
276
277
<listitem>
278
проверка существования переменной:
279
<example>
280
&lt;!--# if expr="$name" --&gt;
281
</example>
282
</listitem>
283
284
<listitem>
285
сравнение переменной с текстом:
286
<example>
287
&lt;!--# if expr="$name = <value>text</value>" --&gt;
288
&lt;!--# if expr="$name != <value>text</value>" --&gt;
289
</example>
290
</listitem>
291
292
<listitem>
293
сравнение переменной с регулярным выражением:
294
<example>
295
&lt;!--# if expr="$name = /<value>text</value>/" --&gt;
296
&lt;!--# if expr="$name != /<value>text</value>/" --&gt;
297
</example>
298
</listitem>
299
</list>
300
301
Если в <value>text</value> встречаются переменные,
302
то производится подстановка их значений.
303
В регулярном выражении можно задать позиционные и именованные выделения,
304
а затем использовать их через переменные, например:
305
<example>
306
&lt;!--# if expr="$name = /(.+)@(?P&lt;domain&gt;.+)/" --&gt;
307
&lt;!--# echo var="1" --&gt;
308
&lt;!--# echo var="domain" --&gt;
309
&lt;!--# endif --&gt;
310
</example>
311
</tag-desc>
312
</list>
313
314
</tag-desc>
315
316
317
<tag-name><literal>include</literal></tag-name>
318
<tag-desc>
319
Включает в ответ результат другого запроса.
320
Параметры команды:
321
322
<list type="tag">
323
<tag-name><literal>file</literal></tag-name>
324
<tag-desc>
325
задаёт включаемый файл, например:
326
<example>
327
&lt;!--# include file="footer.html" --&gt;
328
</example>
329
</tag-desc>
330
331
<tag-name><literal>virtual</literal></tag-name>
332
<tag-desc>
333
задаёт включаемый запрос, например:
334
<example>
335
&lt;!--# include virtual="/remote/body.php?argument=value" --&gt;
336
</example>
337
Несколько запросов, указанных на одной странице и обрабатываемых
338
проксируемыми или FastCGI/uwsgi/SCGI/gRPC-серверами, работают параллельно.
339
Если нужна последовательная обработка, следует воспользоваться параметром
340
<literal>wait</literal>.
341
</tag-desc>
342
343
<tag-name><literal>stub</literal></tag-name>
344
<tag-desc>
345
нестандартный параметр, задающий имя блока,
346
содержимое которого будет выведено, если тело ответа на включаемый запрос
347
пустое или если при исполнении запроса произошла ошибка, например:
348
<example>
349
&lt;!--# block name="one" --&gt;&amp;nbsp;&lt;!--# endblock --&gt;
350
&lt;!--# include virtual="/remote/body.php?argument=value" stub="one" --&gt;
351
</example>
352
Содержимое замещающего блока обрабатывается в контексте включаемого запроса.
353
</tag-desc>
354
355
<tag-name><literal>wait</literal></tag-name>
356
<tag-desc>
357
нестандартный параметр, указывающий, нужно ли ждать
358
полного исполнения данного запроса, прежде чем продолжать выполнение
359
SSI, например:
360
<example>
361
&lt;!--# include virtual="/remote/body.php?argument=value" wait="yes" --&gt;
362
</example>
363
</tag-desc>
364
365
<tag-name id="ssi_include_set"><literal>set</literal></tag-name>
366
<tag-desc>
367
нестандартный параметр, указывающий, что удачный
368
результат выполнения запроса нужно записать в заданную переменную,
369
например:
370
<example>
371
&lt;!--# include virtual="/remote/body.php?argument=value" set="one" --&gt;
372
</example>
373
Максимальный размер ответа задаётся директивой
374
<link doc="ngx_http_core_module.xml" id="subrequest_output_buffer_size"/>
375
(1.13.10):
376
<example>
377
location /remote/ {
378
subrequest_output_buffer_size 64k;
379
...
380
}
381
</example>
382
До версии 1.13.10 в переменные можно было записать только результаты
383
ответов, полученные через модули
384
<link doc="ngx_http_proxy_module.xml">ngx_http_proxy_module</link>,
385
<link doc="ngx_http_memcached_module.xml">ngx_http_memcached_module</link>,
386
<link doc="ngx_http_fastcgi_module.xml">ngx_http_fastcgi_module</link> (1.5.6),
387
<link doc="ngx_http_uwsgi_module.xml">ngx_http_uwsgi_module</link> (1.5.6)
388
и <link doc="ngx_http_scgi_module.xml">ngx_http_scgi_module</link> (1.5.6).
389
Максимальный размер ответа задавался при помощи директив
390
<link doc="ngx_http_proxy_module.xml" id="proxy_buffer_size"/>,
391
<link doc="ngx_http_memcached_module.xml" id="memcached_buffer_size"/>,
392
<link doc="ngx_http_fastcgi_module.xml" id="fastcgi_buffer_size"/>,
393
<link doc="ngx_http_uwsgi_module.xml" id="uwsgi_buffer_size"/>
394
и <link doc="ngx_http_scgi_module.xml" id="scgi_buffer_size"/>.
395
</tag-desc>
396
397
</list>
398
399
</tag-desc>
400
401
402
<tag-name><literal>set</literal></tag-name>
403
<tag-desc>
404
Присваивает значение переменной.
405
Параметры команды:
406
407
<list type="tag">
408
<tag-name><literal>var</literal></tag-name>
409
<tag-desc>
410
имя переменной.
411
</tag-desc>
412
413
<tag-name><literal>value</literal></tag-name>
414
<tag-desc>
415
значение переменной.
416
Если в присваиваемом значении есть переменные,
417
то производится подстановка их значений.
418
</tag-desc>
419
</list>
420
421
</tag-desc>
422
423
</list>
424
</para>
425
426
</section>
427
428
429
<section id="variables" name="Встроенные переменные">
430
431
<para>
432
Модуль <literal>ngx_http_ssi_module</literal> поддерживает
433
две встроенные переменные:
434
<list type="tag">
435
436
<tag-name id="var_date_local"><var>$date_local</var></tag-name>
437
<tag-desc>
438
текущее время в локальной временной зоне.
439
Формат задаётся командой <literal>config</literal>
440
с параметром <literal>timefmt</literal>.
441
</tag-desc>
442
443
<tag-name id="var_date_gmt"><var>$date_gmt</var></tag-name>
444
<tag-desc>
445
текущее время в GMT.
446
Формат задаётся командой <literal>config</literal>
447
с параметром <literal>timefmt</literal>.
448
</tag-desc>
449
450
</list>
451
</para>
452
453
</section>
454
455
</module>
456
457