Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nginx
GitHub Repository: nginx/nginx.org
Path: blob/main/xml/ru/docs/http/ngx_http_scgi_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_scgi_module"
11
link="/ru/docs/http/ngx_http_scgi_module.html"
12
lang="ru"
13
rev="44">
14
15
<section id="summary">
16
17
<para>
18
Модуль <literal>ngx_http_scgi_module</literal> позволяет передавать
19
запросы SCGI-серверу.
20
</para>
21
22
</section>
23
24
25
<section id="example" name="Пример конфигурации">
26
27
<para>
28
<example>
29
location / {
30
include scgi_params;
31
scgi_pass localhost:9000;
32
}
33
</example>
34
</para>
35
36
</section>
37
38
39
<section id="directives" name="Директивы">
40
41
<directive name="scgi_allow_upstream">
42
<syntax><value>строка</value> ...</syntax>
43
<default/>
44
<context>http</context>
45
<context>server</context>
46
<context>location</context>
47
<appeared-in>1.29.3</appeared-in>
48
49
<para>
50
Задаёт условия, при которых доступ к SCGI-серверу
51
будет разрешён или <link id="denied">запрещён</link>.
52
Если все значения строковых параметров непустые
53
и не равны “0”, то доступ разрешён.
54
Условия проверяются каждый раз
55
перед установлением соединения с SCGI-сервером.
56
В значении параметров допустимо использование переменных:
57
<example>
58
geo $upstream_last_addr $allow {
59
volatile;
60
10.10.0.0/24 1;
61
}
62
63
server {
64
listen 127.0.0.1:8080;
65
66
location / {
67
scgi_pass localhost:9000;
68
scgi_allow_upstream $allow;
69
...
70
}
71
}
72
</example>
73
</para>
74
75
<para>
76
<note>
77
Директива доступна как часть
78
<commercial_version>коммерческой подписки</commercial_version>.
79
</note>
80
</para>
81
82
</directive>
83
84
85
<directive name="scgi_bind">
86
<syntax>
87
<value>адрес</value>
88
[<literal>transparent</literal>] |
89
<literal>off</literal></syntax>
90
<default/>
91
<context>http</context>
92
<context>server</context>
93
<context>location</context>
94
95
<para>
96
Задаёт локальный IP-адрес с необязательным портом (1.11.2),
97
который будет использоваться в исходящих соединениях с SCGI-сервером.
98
В значении параметра допустимо использование переменных (1.3.12).
99
Специальное значение <literal>off</literal> (1.3.12) отменяет действие
100
унаследованной с предыдущего уровня конфигурации
101
директивы <literal>scgi_bind</literal>, позволяя системе
102
самостоятельно выбирать локальный IP-адрес и порт.
103
</para>
104
105
<para id="scgi_bind_transparent">
106
Параметр <literal>transparent</literal> (1.11.0) позволяет
107
задать нелокальный IP-aдрес, который будет использоваться в
108
исходящих соединениях с SCGI-сервером,
109
например, реальный IP-адрес клиента:
110
<example>
111
scgi_bind $remote_addr transparent;
112
</example>
113
Для работы параметра
114
обычно требуется
115
запустить рабочие процессы nginx с привилегиями
116
<link doc="../ngx_core_module.xml" id="user">суперпользователя</link>.
117
В Linux этого не требуется (1.13.8), так как если
118
указан параметр <literal>transparent</literal>, то рабочие процессы
119
наследуют capability <literal>CAP_NET_RAW</literal> из главного процесса.
120
Также необходимо настроить таблицу маршрутизации ядра
121
для перехвата сетевого трафика с SCGI-сервера.
122
</para>
123
124
</directive>
125
126
127
<directive name="scgi_bind_dynamic">
128
<syntax><literal>on</literal> | <literal>off</literal></syntax>
129
<default>off</default>
130
<context>http</context>
131
<context>server</context>
132
<context>location</context>
133
<appeared-in>1.29.3</appeared-in>
134
135
<para>
136
Если включено, операция <link id="scgi_bind">bind</link> осуществляется
137
при каждой попытке соединения.
138
</para>
139
140
<para>
141
<note>
142
Директива доступна как часть
143
<commercial_version>коммерческой подписки</commercial_version>.
144
</note>
145
</para>
146
147
</directive>
148
149
150
<directive name="scgi_buffer_size">
151
<syntax><value>размер</value></syntax>
152
<default>4k|8k</default>
153
<context>http</context>
154
<context>server</context>
155
<context>location</context>
156
157
<para>
158
Задаёт <value>размер</value> буфера, в который будет читаться
159
первая часть ответа, получаемого от SCGI-сервера.
160
В этой части ответа находится, как правило, небольшой заголовок ответа;
161
если его размер больше заданного, то такой ответ считается
162
<link id="invalid_header">неверным</link>.
163
По умолчанию размер одного буфера равен размеру страницы памяти.
164
В зависимости от платформы это или 4K, или 8K,
165
однако его можно сделать меньше.
166
</para>
167
168
</directive>
169
170
171
<directive name="scgi_buffering">
172
<syntax><literal>on</literal> | <literal>off</literal></syntax>
173
<default>on</default>
174
<context>http</context>
175
<context>server</context>
176
<context>location</context>
177
178
<para>
179
Разрешает или запрещает использовать буферизацию ответов SCGI-сервера.
180
</para>
181
182
<para>
183
Если буферизация включена, то nginx принимает ответ SCGI-сервера
184
как можно быстрее, сохраняя его в буферы, заданные директивами
185
<link id="scgi_buffer_size"/> и <link id="scgi_buffers"/>.
186
Если ответ не вмещается целиком в память, то его часть может быть записана
187
на диск во <link id="scgi_temp_path">временный файл</link>.
188
Запись во временные файлы контролируется директивами
189
<link id="scgi_max_temp_file_size"/> и
190
<link id="scgi_temp_file_write_size"/>.
191
</para>
192
193
<para>
194
Если буферизация выключена, то ответ синхронно передаётся клиенту сразу же
195
по мере его поступления.
196
nginx не пытается считать весь ответ SCGI-сервера.
197
Максимальный размер данных, который nginx может принять от сервера
198
за один раз, задаётся директивой <link id="scgi_buffer_size"/>.
199
</para>
200
201
<para>
202
Буферизация может быть также включена или выключена путём передачи
203
значения “<literal>yes</literal>” или “<literal>no</literal>” в поле
204
<header>X-Accel-Buffering</header> заголовка ответа.
205
Эту возможность можно запретить с помощью директивы
206
<link id="scgi_ignore_headers"/>.
207
</para>
208
209
</directive>
210
211
212
<directive name="scgi_buffers">
213
<syntax><value>число</value> <value>размер</value></syntax>
214
<default>8 4k|8k</default>
215
<context>http</context>
216
<context>server</context>
217
<context>location</context>
218
219
<para>
220
Задаёт <value>число</value> и <value>размер</value> буферов
221
для одного соединения,
222
в которые будет читаться ответ, получаемый от SCGI-сервера.
223
По умолчанию размер одного буфера равен размеру страницы.
224
В зависимости от платформы это или 4K, или 8K.
225
</para>
226
227
</directive>
228
229
230
<directive name="scgi_busy_buffers_size">
231
<syntax><value>размер</value></syntax>
232
<default>8k|16k</default>
233
<context>http</context>
234
<context>server</context>
235
<context>location</context>
236
237
<para>
238
При включённой <link id="scgi_buffering">буферизации</link> ответов
239
SCGI-сервера, ограничивает суммарный <value>размер</value>
240
буферов, которые могут быть заняты для отправки ответа клиенту, пока
241
ответ ещё не прочитан целиком.
242
Оставшиеся буферы тем временем могут использоваться для чтения ответа
243
и, при необходимости, буферизации части ответа во временный файл.
244
По умолчанию <value>размер</value> ограничен двумя буферами, заданными
245
директивами <link id="scgi_buffer_size"/> и <link id="scgi_buffers"/>.
246
</para>
247
248
</directive>
249
250
251
<directive name="scgi_cache">
252
<syntax><value>зона</value> | <literal>off</literal></syntax>
253
<default>off</default>
254
<context>http</context>
255
<context>server</context>
256
<context>location</context>
257
258
<para>
259
Задаёт зону разделяемой памяти, используемой для кэширования.
260
Одна и та же зона может использоваться в нескольких местах.
261
В значении параметра можно использовать переменные (1.7.9).
262
Параметр <literal>off</literal> запрещает кэширование, унаследованное
263
с предыдущего уровня конфигурации.
264
</para>
265
266
</directive>
267
268
269
<directive name="scgi_cache_background_update">
270
<syntax><literal>on</literal> | <literal>off</literal></syntax>
271
<default>off</default>
272
<context>http</context>
273
<context>server</context>
274
<context>location</context>
275
<appeared-in>1.11.10</appeared-in>
276
277
<para>
278
Позволяет запустить фоновый подзапрос
279
для обновления просроченного элемента кэша,
280
в то время как клиенту возвращается устаревший закэшированный ответ.
281
Использование устаревшего закэшированного ответа в момент его обновления
282
должно быть
283
<link id="scgi_cache_use_stale_updating">разрешено</link>.
284
</para>
285
286
</directive>
287
288
289
<directive name="scgi_cache_bypass">
290
<syntax><value>строка</value> ...</syntax>
291
<default/>
292
<context>http</context>
293
<context>server</context>
294
<context>location</context>
295
296
<para>
297
Задаёт условия, при которых ответ не будет браться из кэша.
298
Если значение хотя бы одного из строковых параметров непустое и не равно “0”,
299
то ответ не берётся из кэша:
300
<example>
301
scgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
302
scgi_cache_bypass $http_pragma $http_authorization;
303
</example>
304
Можно использовать совместно с директивой <link id="scgi_no_cache"/>.
305
</para>
306
307
</directive>
308
309
310
<directive name="scgi_cache_key">
311
<syntax><value>строка</value></syntax>
312
<default/>
313
<context>http</context>
314
<context>server</context>
315
<context>location</context>
316
317
<para>
318
Задаёт ключ для кэширования, например,
319
<example>
320
scgi_cache_key localhost:9000$request_uri;
321
</example>
322
</para>
323
324
</directive>
325
326
327
<directive name="scgi_cache_lock">
328
<syntax><literal>on</literal> | <literal>off</literal></syntax>
329
<default>off</default>
330
<context>http</context>
331
<context>server</context>
332
<context>location</context>
333
<appeared-in>1.1.12</appeared-in>
334
335
<para>
336
Если включено, одновременно только одному запросу будет позволено
337
заполнить новый элемент кэша, идентифицируемый согласно директиве
338
<link id="scgi_cache_key"/>, передав запрос на SCGI-сервер.
339
Остальные запросы этого же элемента будут либо ожидать
340
появления ответа в кэше, либо освобождения блокировки
341
этого элемента, в течение времени, заданного директивой
342
<link id="scgi_cache_lock_timeout"/>.
343
</para>
344
345
</directive>
346
347
348
<directive name="scgi_cache_lock_age">
349
<syntax><value>время</value></syntax>
350
<default>5s</default>
351
<context>http</context>
352
<context>server</context>
353
<context>location</context>
354
<appeared-in>1.7.8</appeared-in>
355
356
<para>
357
Если последний запрос, переданный на SCGI-сервер
358
для заполнения нового элемента кэша,
359
не завершился за указанное <value>время</value>,
360
на SCGI-сервер может быть передан ещё один запрос.
361
</para>
362
363
</directive>
364
365
366
<directive name="scgi_cache_lock_timeout">
367
<syntax><value>время</value></syntax>
368
<default>5s</default>
369
<context>http</context>
370
<context>server</context>
371
<context>location</context>
372
<appeared-in>1.1.12</appeared-in>
373
374
<para>
375
Задаёт таймаут для <link id="scgi_cache_lock"/>.
376
По истечении указанного <value>времени</value>
377
запрос будет передан на SCGI-сервер,
378
однако ответ не будет закэширован.
379
<note>
380
До версии 1.7.8 такой ответ мог быть закэширован.
381
</note>
382
</para>
383
384
</directive>
385
386
387
<directive name="scgi_cache_max_range_offset">
388
<syntax><value>число</value></syntax>
389
<default/>
390
<context>http</context>
391
<context>server</context>
392
<context>location</context>
393
<appeared-in>1.11.6</appeared-in>
394
395
<para>
396
Задаёт смещение в байтах для запросов с указанием диапазона запрашиваемых байт
397
(byte-range requests).
398
Если диапазон находится за указанным смещением,
399
range-запрос будет передан на SCGI-сервер
400
и ответ не будет закэширован.
401
</para>
402
403
</directive>
404
405
406
<directive name="scgi_cache_methods">
407
<syntax>
408
<literal>GET</literal> |
409
<literal>HEAD</literal> |
410
<literal>POST</literal>
411
...</syntax>
412
<default>GET HEAD</default>
413
<context>http</context>
414
<context>server</context>
415
<context>location</context>
416
417
<para>
418
Если метод запроса клиента указан в этой директиве,
419
то ответ будет закэширован.
420
Методы “<literal>GET</literal>” и “<literal>HEAD</literal>” всегда добавляются
421
в список, но тем не менее рекомендуется перечислять их явно.
422
См. также директиву <link id="scgi_no_cache"/>.
423
</para>
424
425
</directive>
426
427
428
<directive name="scgi_cache_min_uses">
429
<syntax><value>число</value></syntax>
430
<default>1</default>
431
<context>http</context>
432
<context>server</context>
433
<context>location</context>
434
435
<para>
436
Задаёт <value>число</value> запросов, после которого ответ будет закэширован.
437
</para>
438
439
</directive>
440
441
442
<directive name="scgi_cache_path">
443
<syntax>
444
<value>путь</value>
445
[<literal>levels</literal>=<value>уровни</value>]
446
[<literal>use_temp_path</literal>=<literal>on</literal>|<literal>off</literal>]
447
<literal>keys_zone</literal>=<value>имя</value>:<value>размер</value>
448
[<literal>inactive</literal>=<value>время</value>]
449
[<literal>max_size</literal>=<value>размер</value>]
450
[<literal>min_free</literal>=<value>размер</value>]
451
[<literal>manager_files</literal>=<value>число</value>]
452
[<literal>manager_sleep</literal>=<value>время</value>]
453
[<literal>manager_threshold</literal>=<value>время</value>]
454
[<literal>loader_files</literal>=<value>число</value>]
455
[<literal>loader_sleep</literal>=<value>время</value>]
456
[<literal>loader_threshold</literal>=<value>время</value>]
457
[<literal>purger</literal>=<literal>on</literal>|<literal>off</literal>]
458
[<literal>purger_files</literal>=<value>число</value>]
459
[<literal>purger_sleep</literal>=<value>время</value>]
460
[<literal>purger_threshold</literal>=<value>время</value>]</syntax>
461
<default/>
462
<context>http</context>
463
464
<para>
465
Задаёт путь и другие параметры кэша.
466
Данные кэша хранятся в файлах.
467
Именем файла в кэше является результат функции MD5
468
от <link id="scgi_cache_key">ключа кэширования</link>.
469
Параметр <literal>levels</literal> задаёт уровни иерархии кэша:
470
можно задать от 1 до 3 уровней, на каждом уровне допускаются значения 1 или 2.
471
Например, при использовании
472
<example>
473
scgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
474
</example>
475
имена файлов в кэше будут такого вида:
476
<example>
477
/data/nginx/cache/<emphasis>c</emphasis>/<emphasis>29</emphasis>/b7f54b2df7773722d382f4809d650<emphasis>29c</emphasis>
478
</example>
479
</para>
480
481
<para>
482
Кэшируемый ответ сначала записывается во временный файл, а потом этот файл
483
переименовывается.
484
Начиная с версии 0.8.9 временные файлы и кэш
485
могут располагаться на разных файловых системах.
486
Однако нужно учитывать,
487
что в этом случае вместо дешёвой операции переименовывания в пределах
488
одной файловой системы файл копируется с одной файловой системы на другую.
489
Поэтому лучше, если кэш будет находиться на той же файловой
490
системе, что и каталог с временными файлами.
491
Какой из каталогов будет использоваться для временных файлов
492
определяется параметром <literal>use_temp_path</literal> (1.7.10).
493
Если параметр не задан или установлен в значение “<literal>on</literal>”,
494
то будет использоваться каталог, задаваемый директивой
495
<link id="scgi_temp_path"/> для данного location.
496
Если параметр установлен в значение “<literal>off</literal>”,
497
то временные файлы будут располагаться непосредственно в каталоге кэша.
498
</para>
499
500
<para>
501
Кроме того, все активные ключи и информация о данных хранятся в зоне
502
разделяемой памяти, <value>имя</value> и <value>размер</value> которой
503
задаются параметром <literal>keys_zone</literal>.
504
Зоны размером в 1 мегабайт достаточно для хранения около 8 тысяч ключей.
505
<note>
506
Как часть
507
<commercial_version>коммерческой подписки</commercial_version>
508
в зоне разделяемой памяти также хранится расширенная
509
<link doc="ngx_http_api_module.xml" id="http_caches_">информация</link> о кэше,
510
поэтому для хранения аналогичного количества ключей необходимо указывать
511
больший размер зоны.
512
Например
513
зоны размером в 1 мегабайт достаточно для хранения около 4 тысяч ключей.
514
</note>
515
</para>
516
517
<para>
518
Если к данным кэша не обращаются в течение времени, заданного параметром
519
<literal>inactive</literal>, то данные удаляются, независимо от их свежести.
520
По умолчанию <literal>inactive</literal> равен 10 минутам.
521
</para>
522
523
<para id="scgi_cache_path_max_size">
524
Специальный процесс “cache manager” следит за максимальным размером кэша,
525
заданным параметром <literal>max_size</literal>,
526
а также за минимальным объёмом свободного места на файловой системе с кэшем,
527
заданным параметром <literal>min_free</literal> (1.19.1).
528
При превышении максимального размера кэша
529
или недостаточном объёме свободного места
530
процесс удаляет наименее востребованные данные.
531
Удаление данных происходит итерациями, настраиваемыми параметрами (1.11.5)
532
<literal>manager_files</literal>,
533
<literal>manager_threshold</literal> и
534
<literal>manager_sleep</literal>.
535
За одну итерацию загружается не более <literal>manager_files</literal>
536
элементов (по умолчанию 100).
537
Время работы одной итерации ограничено параметром
538
<literal>manager_threshold</literal> (по умолчанию 200 миллисекунд).
539
Между итерациями делается пауза на время, заданное параметром
540
<literal>manager_sleep</literal> (по умолчанию 50 миллисекунд).
541
</para>
542
543
<para>
544
Через минуту после старта активируется специальный процесс “cache loader”,
545
который загружает в зону кэша информацию о ранее закэшированных данных,
546
хранящихся на файловой системе.
547
Загрузка также происходит итерациями.
548
За одну итерацию загружается не более <literal>loader_files</literal>
549
элементов (по умолчанию 100).
550
Кроме того, время работы одной итерации ограничено параметром
551
<literal>loader_threshold</literal> (по умолчанию 200 миллисекунд).
552
Между итерациями делается пауза на время, заданное параметром
553
<literal>loader_sleep</literal> (по умолчанию 50 миллисекунд).
554
</para>
555
556
<para>
557
Кроме того,
558
следующие параметры доступны как часть
559
<commercial_version>коммерческой подписки</commercial_version>:
560
</para>
561
562
<para>
563
<list type="tag">
564
565
<tag-name id="purger">
566
<literal>purger</literal>=<literal>on</literal>|<literal>off</literal>
567
</tag-name>
568
<tag-desc>
569
Указывает, будут ли записи в кэше, соответствующие
570
<link id="scgi_cache_purge">маске</link>,
571
удалены с диска при помощи процесса “cache purger” (1.7.12).
572
Установка параметра в значение <literal>on</literal>
573
(по умолчанию <literal>off</literal>)
574
активирует процесс “cache purger”, который
575
проходит по всем записям в кэше
576
и удаляет записи, соответствующие этой маске.
577
</tag-desc>
578
579
<tag-name id="purger_files">
580
<literal>purger_files</literal>=<value>число</value>
581
</tag-name>
582
<tag-desc>
583
Задаёт число элементов, которые будут сканироваться за одну итерацию (1.7.12).
584
По умолчанию <literal>purger_files</literal> равен 10.
585
</tag-desc>
586
587
<tag-name id="purger_threshold">
588
<literal>purger_threshold</literal>=<value>время</value>
589
</tag-name>
590
<tag-desc>
591
Задаёт продолжительность одной итерации (1.7.12).
592
По умолчанию <literal>purger_threshold</literal> равен 50 миллисекундам.
593
</tag-desc>
594
595
<tag-name id="purger_sleep">
596
<literal>purger_sleep</literal>=<value>время</value>
597
</tag-name>
598
<tag-desc>
599
Задаёт паузу между итерациями (1.7.12).
600
По умолчанию <literal>purger_sleep</literal> равен 50 миллисекундам.
601
</tag-desc>
602
603
</list>
604
</para>
605
606
<para>
607
<note>
608
В версиях 1.7.3, 1.7.7 и 1.11.10 формат заголовка кэша был изменён.
609
При обновлении на более новую версию nginx
610
ранее закэшированные ответы будут считаться недействительными.
611
</note>
612
</para>
613
614
</directive>
615
616
617
<directive name="scgi_cache_purge">
618
<syntax>строка ...</syntax>
619
<default/>
620
<context>http</context>
621
<context>server</context>
622
<context>location</context>
623
<appeared-in>1.5.7</appeared-in>
624
625
<para>
626
Задаёт условия, при которых запрос будет считаться запросом
627
на очистку кэша.
628
Если значение хотя бы одного из строковых параметров непустое и не равно “0”,
629
то запись в кэше с соответствующим
630
<link id="scgi_cache_key">ключом кэширования</link> удаляется.
631
В результате успешной операции возвращается ответ с кодом
632
<http-status code="204" text="No Content"/>.
633
</para>
634
635
<para>
636
Если <link id="scgi_cache_key">ключ кэширования</link>
637
запроса на очистку заканчивается
638
звёздочкой (“<literal>*</literal>”), то все записи в кэше, соответствующие
639
этой маске, будут удалены из кэша.
640
Тем не менее, эти записи будут оставаться на диске или до момента удаления
641
из-за <link id="scgi_cache_path">отсутствия обращения к данным</link>,
642
или до обработки их процессом “<link id="purger">cache purger</link>” (1.7.12),
643
или до попытки клиента получить к ним доступ.
644
</para>
645
646
<para>
647
Пример конфигурации:
648
<example>
649
scgi_cache_path /data/nginx/cache keys_zone=cache_zone:10m;
650
651
map $request_method $purge_method {
652
PURGE 1;
653
default 0;
654
}
655
656
server {
657
...
658
location / {
659
scgi_pass http://backend;
660
scgi_cache cache_zone;
661
scgi_cache_key $uri;
662
scgi_cache_purge $purge_method;
663
}
664
}
665
</example>
666
<note>
667
Функциональность доступна как часть
668
<commercial_version>коммерческой подписки</commercial_version>.
669
</note>
670
</para>
671
672
</directive>
673
674
675
<directive name="scgi_cache_revalidate">
676
<syntax><literal>on</literal> | <literal>off</literal></syntax>
677
<default>off</default>
678
<context>http</context>
679
<context>server</context>
680
<context>location</context>
681
<appeared-in>1.5.7</appeared-in>
682
683
<para>
684
Разрешает ревалидацию просроченных элементов кэша при помощи
685
условных запросов с полями заголовка
686
<header>If-Modified-Since</header> и <header>If-None-Match</header>.
687
</para>
688
689
</directive>
690
691
692
<directive name="scgi_cache_use_stale">
693
<syntax>
694
<literal>error</literal> |
695
<literal>timeout</literal> |
696
<literal>invalid_header</literal> |
697
<literal>updating</literal> |
698
<literal>http_500</literal> |
699
<literal>http_503</literal> |
700
<literal>http_403</literal> |
701
<literal>http_404</literal> |
702
<literal>http_429</literal> |
703
<literal>off</literal>
704
...</syntax>
705
<default>off</default>
706
<context>http</context>
707
<context>server</context>
708
<context>location</context>
709
710
<para>
711
Определяет, в каких случаях можно использовать устаревший закэшированный ответ.
712
Параметры директивы совпадают с параметрами
713
директивы <link id="scgi_next_upstream"/>.
714
</para>
715
716
<para>
717
Параметр <literal>error</literal> также позволяет использовать
718
устаревший закэшированный ответ при невозможности выбора
719
SCGI-сервера для обработки запроса.
720
</para>
721
722
<para id="scgi_cache_use_stale_updating">
723
Кроме того, дополнительный параметр <literal>updating</literal>
724
разрешает использовать устаревший закэшированный ответ,
725
если на данный момент он уже обновляется.
726
Это позволяет минимизировать число обращений к SCGI-серверам
727
при обновлении закэшированных данных.
728
</para>
729
730
<para>
731
Использование устаревшего закэшированного ответа
732
может также быть разрешено непосредственно в заголовке ответа
733
на определённое количество секунд после того, как ответ устарел (1.11.10).
734
Такой способ менее приоритетен, чем задание параметров директивы.
735
<list type="bullet" compact="no">
736
737
<listitem>
738
Расширение
739
<link url="https://datatracker.ietf.org/doc/html/rfc5861#section-3">stale-while-revalidate</link>
740
поля заголовка <header>Cache-Control</header> разрешает
741
использовать устаревший закэшированный ответ,
742
если на данный момент он уже обновляется.
743
</listitem>
744
745
<listitem>
746
Расширение
747
<link url="https://datatracker.ietf.org/doc/html/rfc5861#section-4">stale-if-error</link>
748
поля заголовка <header>Cache-Control</header> разрешает
749
использовать устаревший закэшированный ответ в случае ошибки.
750
</listitem>
751
752
</list>
753
</para>
754
755
<para>
756
Чтобы минимизировать число обращений к SCGI-серверам при
757
заполнении нового элемента кэша, можно воспользоваться директивой
758
<link id="scgi_cache_lock"/>.
759
</para>
760
761
</directive>
762
763
764
<directive name="scgi_cache_valid">
765
<syntax>[<value>код</value> ...] <value>время</value></syntax>
766
<default/>
767
<context>http</context>
768
<context>server</context>
769
<context>location</context>
770
771
<para>
772
Задаёт время кэширования для разных кодов ответа.
773
Например, директивы
774
<example>
775
scgi_cache_valid 200 302 10m;
776
scgi_cache_valid 404 1m;
777
</example>
778
задают время кэширования 10 минут для ответов с кодами 200 и 302
779
и 1 минуту для ответов с кодом 404.
780
</para>
781
782
<para>
783
Если указано только <value>время</value> кэширования,
784
<example>
785
scgi_cache_valid 5m;
786
</example>
787
то кэшируются только ответы 200, 301 и 302.
788
</para>
789
790
<para>
791
Кроме того, можно кэшировать любые ответы с помощью параметра
792
<literal>any</literal>:
793
<example>
794
scgi_cache_valid 200 302 10m;
795
scgi_cache_valid 301 1h;
796
scgi_cache_valid any 1m;
797
</example>
798
</para>
799
800
<para>
801
Параметры кэширования могут также быть заданы непосредственно
802
в заголовке ответа.
803
Такой способ приоритетнее, чем задание времени кэширования с помощью директивы.
804
<list type="bullet" compact="no">
805
806
<listitem>
807
Поле заголовка <header>X-Accel-Expires</header> задаёт время кэширования
808
ответа в секундах.
809
Значение 0 запрещает кэшировать ответ.
810
Если значение начинается с префикса <literal>@</literal>, оно задаёт абсолютное
811
время в секундах с начала эпохи, до которого ответ может быть закэширован.
812
</listitem>
813
814
<listitem>
815
Если в заголовке нет поля <header>X-Accel-Expires</header>,
816
параметры кэширования определяются по полям заголовка
817
<header>Expires</header> или <header>Cache-Control</header>.
818
</listitem>
819
820
<listitem>
821
Ответ, в заголовке которого есть поле <header>Set-Cookie</header>,
822
не будет кэшироваться.
823
</listitem>
824
825
<listitem>
826
Ответ, в заголовке которого есть поле <header>Vary</header>
827
со специальным значением “<literal>*</literal>”,
828
не будет кэшироваться (1.7.7).
829
Ответ, в заголовке которого есть поле <header>Vary</header>
830
с другим значением, будет закэширован
831
с учётом соответствующих полей заголовка запроса (1.7.7).
832
</listitem>
833
834
</list>
835
Обработка одного или более из этих полей заголовка может быть отключена
836
при помощи директивы <link id="scgi_ignore_headers"/>.
837
</para>
838
839
</directive>
840
841
842
<directive name="scgi_connect_timeout">
843
<syntax><value>время</value></syntax>
844
<default>60s</default>
845
<context>http</context>
846
<context>server</context>
847
<context>location</context>
848
849
<para>
850
Задаёт таймаут для установления соединения с SCGI-сервером.
851
Необходимо иметь в виду, что этот таймаут обычно не может превышать 75 секунд.
852
</para>
853
854
</directive>
855
856
857
<directive name="scgi_force_ranges">
858
<syntax><literal>on</literal> | <literal>off</literal></syntax>
859
<default>off</default>
860
<context>http</context>
861
<context>server</context>
862
<context>location</context>
863
<appeared-in>1.7.7</appeared-in>
864
865
<para>
866
Включает поддержку диапазонов запрашиваемых байт (byte-range)
867
для кэшированных и некэшированных ответов SCGI-сервера
868
вне зависимости от наличия поля <header>Accept-Ranges</header>
869
в заголовках этих ответов.
870
</para>
871
872
</directive>
873
874
875
<directive name="scgi_hide_header">
876
<syntax><value>поле</value></syntax>
877
<default/>
878
<context>http</context>
879
<context>server</context>
880
<context>location</context>
881
882
<para>
883
По умолчанию
884
nginx не передаёт клиенту поля заголовка <header>Status</header> и
885
<header>X-Accel-...</header> из ответа SCGI-сервера.
886
Директива <literal>scgi_hide_header</literal> задаёт дополнительные поля,
887
которые не будут передаваться.
888
Если же передачу полей нужно разрешить, можно воспользоваться
889
директивой <link id="scgi_pass_header"/>.
890
</para>
891
892
</directive>
893
894
895
<directive name="scgi_ignore_client_abort">
896
<syntax><literal>on</literal> | <literal>off</literal></syntax>
897
<default>off</default>
898
<context>http</context>
899
<context>server</context>
900
<context>location</context>
901
902
<para>
903
Определяет, закрывать ли соединение с SCGI-сервером
904
в случае, если клиент закрыл соединение, не дождавшись ответа.
905
</para>
906
907
</directive>
908
909
910
<directive name="scgi_ignore_headers">
911
<syntax><value>поле</value> ...</syntax>
912
<default/>
913
<context>http</context>
914
<context>server</context>
915
<context>location</context>
916
917
<para>
918
Запрещает обработку некоторых полей заголовка из ответа SCGI-сервера.
919
В директиве можно указать поля <header>X-Accel-Redirect</header>,
920
<header>X-Accel-Expires</header>, <header>X-Accel-Limit-Rate</header> (1.1.6),
921
<header>X-Accel-Buffering</header> (1.1.6),
922
<header>X-Accel-Charset</header> (1.1.6), <header>Expires</header>,
923
<header>Cache-Control</header>, <header>Set-Cookie</header> (0.8.44)
924
и <header>Vary</header> (1.7.7).
925
</para>
926
927
<para>
928
Если не запрещено, обработка этих полей заголовка заключается в следующем:
929
<list type="bullet" compact="no">
930
931
<listitem>
932
<header>X-Accel-Expires</header>, <header>Expires</header>,
933
<header>Cache-Control</header>, <header>Set-Cookie</header>
934
и <header>Vary</header>
935
задают параметры <link id="scgi_cache_valid">кэширования</link> ответа;
936
</listitem>
937
938
<listitem>
939
<header>X-Accel-Redirect</header> производит
940
<link doc="ngx_http_core_module.xml" id="internal">внутреннее
941
перенаправление</link> на указанный URI;
942
</listitem>
943
944
<listitem>
945
<header>X-Accel-Limit-Rate</header> задаёт
946
<link doc="ngx_http_core_module.xml" id="limit_rate">ограничение
947
скорости</link> передачи ответа клиенту;
948
</listitem>
949
950
<listitem>
951
<header>X-Accel-Buffering</header> включает или выключает
952
<link id="scgi_buffering">буферизацию</link> ответа;
953
</listitem>
954
955
<listitem>
956
<header>X-Accel-Charset</header> задаёт желаемую
957
<link doc="ngx_http_charset_module.xml" id="charset">кодировку</link>
958
ответа.
959
</listitem>
960
961
</list>
962
</para>
963
964
</directive>
965
966
967
<directive name="scgi_intercept_errors">
968
<syntax><literal>on</literal> | <literal>off</literal></syntax>
969
<default>off</default>
970
<context>http</context>
971
<context>server</context>
972
<context>location</context>
973
974
<para>
975
Определяет, передавать ли клиенту ответы SCGI-сервера с кодом
976
больше либо равным 300,
977
или же перехватывать их и перенаправлять на обработку nginx’у с помощью
978
директивы <link doc="ngx_http_core_module.xml" id="error_page"/>.
979
</para>
980
981
</directive>
982
983
984
<directive name="scgi_limit_rate">
985
<syntax><value>скорость</value></syntax>
986
<default>0</default>
987
<context>http</context>
988
<context>server</context>
989
<context>location</context>
990
<appeared-in>1.7.7</appeared-in>
991
992
<para>
993
Ограничивает скорость чтения ответа от SCGI-сервера.
994
<value>Скорость</value> задаётся в байтах в секунду.
995
Значение 0 отключает ограничение скорости.
996
Ограничение устанавливается на запрос,
997
поэтому, если nginx одновременно
998
откроет два соединения к SCGI-серверу,
999
суммарная скорость будет вдвое выше заданного ограничения.
1000
Ограничение работает только в случае, если включена
1001
<link id="scgi_buffering">буферизация</link> ответов SCGI-сервера.
1002
В значении параметра можно использовать переменные (1.27.0).
1003
</para>
1004
1005
</directive>
1006
1007
1008
<directive name="scgi_max_temp_file_size">
1009
<syntax><value>размер</value></syntax>
1010
<default>1024m</default>
1011
<context>http</context>
1012
<context>server</context>
1013
<context>location</context>
1014
1015
<para>
1016
Если включена <link id="scgi_buffering">буферизация</link> ответов
1017
SCGI-сервера, и ответ не вмещается целиком в буферы,
1018
заданные директивами <link id="scgi_buffer_size"/> и
1019
<link id="scgi_buffers"/>, часть ответа может быть записана во временный файл.
1020
Эта директива задаёт максимальный <value>размер</value> временного файла.
1021
Размер данных, сбрасываемых во временный файл за один раз, задаётся
1022
директивой <link id="scgi_temp_file_write_size"/>.
1023
</para>
1024
1025
<para>
1026
Значение 0 отключает возможность буферизации ответов во временные файлы.
1027
</para>
1028
1029
<para>
1030
<note>
1031
Данное ограничение не распространяется на ответы,
1032
которые будут <link id="scgi_cache">закэшированы</link>
1033
или <link id="scgi_store">сохранены</link> на диске.
1034
</note>
1035
</para>
1036
1037
</directive>
1038
1039
1040
<directive name="scgi_next_upstream">
1041
<syntax>
1042
<literal>error</literal> |
1043
<literal>timeout</literal> |
1044
<literal>denied</literal> |
1045
<literal>invalid_header</literal> |
1046
<literal>http_500</literal> |
1047
<literal>http_503</literal> |
1048
<literal>http_403</literal> |
1049
<literal>http_404</literal> |
1050
<literal>http_429</literal> |
1051
<literal>non_idempotent</literal> |
1052
<literal>off</literal>
1053
...</syntax>
1054
<default>error timeout</default>
1055
<context>http</context>
1056
<context>server</context>
1057
<context>location</context>
1058
1059
<para>
1060
Определяет, в каких случаях запрос будет передан следующему серверу:
1061
<list type="tag">
1062
1063
<tag-name><literal>error</literal></tag-name>
1064
<tag-desc>произошла ошибка соединения с сервером, передачи ему запроса или
1065
чтения заголовка ответа сервера;</tag-desc>
1066
1067
<tag-name><literal>timeout</literal></tag-name>
1068
<tag-desc>произошёл таймаут во время соединения с сервером,
1069
передачи ему запроса или чтения заголовка ответа сервера;</tag-desc>
1070
1071
<tag-name id="denied"><literal>denied</literal></tag-name>
1072
<tag-desc>сервер <link id="proxy_allow_upstream">отклонил</link>
1073
соединение (1.29.3);
1074
<para>
1075
<note>
1076
Параметр доступен как часть
1077
<commercial_version>коммерческой подписки</commercial_version>.
1078
</note>
1079
</para>
1080
</tag-desc>
1081
1082
<tag-name id="invalid_header"><literal>invalid_header</literal></tag-name>
1083
<tag-desc>сервер вернул пустой или неверный ответ;</tag-desc>
1084
1085
<tag-name><literal>http_500</literal></tag-name>
1086
<tag-desc>сервер вернул ответ с кодом 500;</tag-desc>
1087
1088
<tag-name><literal>http_503</literal></tag-name>
1089
<tag-desc>сервер вернул ответ с кодом 503;</tag-desc>
1090
1091
<tag-name><literal>http_403</literal></tag-name>
1092
<tag-desc>сервер вернул ответ с кодом 403;</tag-desc>
1093
1094
<tag-name><literal>http_404</literal></tag-name>
1095
<tag-desc>сервер вернул ответ с кодом 404;</tag-desc>
1096
1097
<tag-name><literal>http_429</literal></tag-name>
1098
<tag-desc>сервер вернул ответ с кодом 429 (1.11.13);</tag-desc>
1099
1100
<tag-name id="non_idempotent"><literal>non_idempotent</literal></tag-name>
1101
<tag-desc>обычно запросы с
1102
<link url="https://datatracker.ietf.org/doc/html/rfc7231#section-4.2.2">неидемпотентным</link>
1103
методом
1104
(<literal>POST</literal>, <literal>LOCK</literal>, <literal>PATCH</literal>)
1105
не передаются на другой сервер,
1106
если запрос серверу группы уже был отправлен (1.9.13);
1107
включение параметра явно разрешает повторять подобные запросы;
1108
</tag-desc>
1109
1110
1111
<tag-name><literal>off</literal></tag-name>
1112
<tag-desc>запрещает передачу запроса следующему серверу.</tag-desc>
1113
1114
</list>
1115
</para>
1116
1117
<para>
1118
Необходимо понимать, что передача запроса следующему серверу возможна
1119
только при условии, что клиенту ещё ничего не передавалось.
1120
То есть, если ошибка или таймаут возникли в середине передачи ответа,
1121
то исправить это уже невозможно.
1122
</para>
1123
1124
<para>
1125
Директива также определяет, что считается
1126
<link doc="ngx_http_upstream_module.xml" id="max_fails">неудачной
1127
попыткой</link> работы с сервером.
1128
Случаи <literal>error</literal>, <literal>timeout</literal>,
1129
<literal>denied</literal> и
1130
<literal>invalid_header</literal>
1131
всегда считаются неудачными попытками, даже если они не указаны в директиве.
1132
Случаи <literal>http_500</literal>, <literal>http_503</literal>
1133
и <literal>http_429</literal>
1134
считаются неудачными попытками, только если они указаны в директиве.
1135
Случаи <literal>http_403</literal> и <literal>http_404</literal>
1136
никогда не считаются неудачными попытками.
1137
</para>
1138
1139
<para>
1140
Передача запроса следующему серверу может быть ограничена по
1141
<link id="scgi_next_upstream_tries">количеству попыток</link>
1142
и по <link id="scgi_next_upstream_timeout">времени</link>.
1143
</para>
1144
1145
</directive>
1146
1147
1148
<directive name="scgi_next_upstream_timeout">
1149
<syntax><value>время</value></syntax>
1150
<default>0</default>
1151
<context>http</context>
1152
<context>server</context>
1153
<context>location</context>
1154
<appeared-in>1.7.5</appeared-in>
1155
1156
<para>
1157
Ограничивает время, в течение которого возможна передача запроса
1158
<link id="scgi_next_upstream">следующему серверу</link>.
1159
Значение <literal>0</literal> отключает это ограничение.
1160
</para>
1161
1162
</directive>
1163
1164
1165
<directive name="scgi_next_upstream_tries">
1166
<syntax><value>число</value></syntax>
1167
<default>0</default>
1168
<context>http</context>
1169
<context>server</context>
1170
<context>location</context>
1171
<appeared-in>1.7.5</appeared-in>
1172
1173
<para>
1174
Ограничивает число допустимых попыток для передачи запроса
1175
<link id="scgi_next_upstream">следующему серверу</link>.
1176
Значение <literal>0</literal> отключает это ограничение.
1177
</para>
1178
1179
</directive>
1180
1181
1182
<directive name="scgi_no_cache">
1183
<syntax><value>строка</value> ...</syntax>
1184
<default/>
1185
<context>http</context>
1186
<context>server</context>
1187
<context>location</context>
1188
1189
<para>
1190
Задаёт условия, при которых ответ не будет сохраняться в кэш.
1191
Если значение хотя бы одного из строковых параметров непустое и не равно “0”,
1192
то ответ не будет сохранён:
1193
<example>
1194
scgi_no_cache $cookie_nocache $arg_nocache$arg_comment;
1195
scgi_no_cache $http_pragma $http_authorization;
1196
</example>
1197
Можно использовать совместно с директивой <link id="scgi_cache_bypass"/>.
1198
</para>
1199
1200
</directive>
1201
1202
1203
<directive name="scgi_param">
1204
<syntax>
1205
<value>параметр</value> <value>значение</value>
1206
[<literal>if_not_empty</literal>]</syntax>
1207
<default>HTTP_HOST $host$is_request_port$request_port</default>
1208
<context>http</context>
1209
<context>server</context>
1210
<context>location</context>
1211
1212
<para>
1213
Задаёт <value>параметр</value>, который будет передаваться SCGI-серверу.
1214
В качестве значения можно использовать текст, переменные и их комбинации.
1215
Директивы наследуются с предыдущего уровня конфигурации при условии, что
1216
на данном уровне не описаны свои директивы <literal>scgi_param</literal>.
1217
</para>
1218
1219
<para>
1220
Стандартные
1221
<link url="https://datatracker.ietf.org/doc/html/rfc3875#section-4.1">переменные
1222
окружения CGI</link>
1223
должны передаваться как заголовки SCGI, см. файл <path>scgi_params</path>
1224
из дистрибутива:
1225
<example>
1226
location / {
1227
include scgi_params;
1228
...
1229
}
1230
</example>
1231
</para>
1232
1233
<para>
1234
Если директива указана с <literal>if_not_empty</literal> (1.1.11),
1235
то такой параметр с пустым значением передаваться на сервер не будет:
1236
<example>
1237
scgi_param HTTPS $https if_not_empty;
1238
</example>
1239
</para>
1240
1241
</directive>
1242
1243
1244
<directive name="scgi_pass">
1245
<syntax><value>адрес</value></syntax>
1246
<default/>
1247
<context>location</context>
1248
<context>if в location</context>
1249
1250
<para>
1251
Задаёт адрес SCGI-сервера.
1252
Адрес может быть указан в виде доменного имени или IP-адреса,
1253
и порта:
1254
<example>
1255
scgi_pass localhost:9000;
1256
</example>
1257
или в виде пути UNIX-сокета:
1258
<example>
1259
scgi_pass unix:/tmp/scgi.socket;
1260
</example>
1261
</para>
1262
1263
<para>
1264
Если доменному имени соответствует несколько адресов, то все они будут
1265
использоваться по очереди (round-robin).
1266
И, кроме того, адрес может быть
1267
<link doc="ngx_http_upstream_module.xml">группой серверов</link>.
1268
</para>
1269
1270
<para>
1271
В значении параметра можно использовать переменные.
1272
В этом случае, если адрес указан в виде доменного имени,
1273
имя ищется среди описанных
1274
<link doc="ngx_http_upstream_module.xml">групп серверов</link>
1275
и если не найдено, то определяется с помощью
1276
<link doc="ngx_http_core_module.xml" id="resolver"/>’а.
1277
</para>
1278
1279
</directive>
1280
1281
1282
<directive name="scgi_pass_header">
1283
<syntax><value>поле</value></syntax>
1284
<default/>
1285
<context>http</context>
1286
<context>server</context>
1287
<context>location</context>
1288
1289
<para>
1290
Разрешает передавать от SCGI-сервера клиенту
1291
<link id="scgi_hide_header">запрещённые для передачи</link> поля заголовка.
1292
</para>
1293
1294
</directive>
1295
1296
1297
<directive name="scgi_pass_request_body">
1298
<syntax><literal>on</literal> | <literal>off</literal></syntax>
1299
<default>on</default>
1300
<context>http</context>
1301
<context>server</context>
1302
<context>location</context>
1303
1304
<para>
1305
Позволяет запретить передачу исходного тела запроса
1306
на SCGI-сервер.
1307
См. также директиву <link id="scgi_pass_request_headers"/>.
1308
</para>
1309
1310
</directive>
1311
1312
1313
<directive name="scgi_pass_request_headers">
1314
<syntax><literal>on</literal> | <literal>off</literal></syntax>
1315
<default>on</default>
1316
<context>http</context>
1317
<context>server</context>
1318
<context>location</context>
1319
1320
<para>
1321
Позволяет запретить передачу полей заголовка исходного запроса на
1322
SCGI-сервер.
1323
См. также директивы <link id="scgi_pass_request_body"/>.
1324
</para>
1325
1326
</directive>
1327
1328
1329
<directive name="scgi_read_timeout">
1330
<syntax><value>время</value></syntax>
1331
<default>60s</default>
1332
<context>http</context>
1333
<context>server</context>
1334
<context>location</context>
1335
1336
<para>
1337
Задаёт таймаут при чтении ответа SCGI-сервера.
1338
Таймаут устанавливается не на всю передачу ответа,
1339
а только между двумя операциями чтения.
1340
Если по истечении этого времени SCGI-сервер ничего не передаст,
1341
соединение закрывается.
1342
</para>
1343
1344
</directive>
1345
1346
1347
<directive name="scgi_request_buffering">
1348
<syntax><literal>on</literal> | <literal>off</literal></syntax>
1349
<default>on</default>
1350
<context>http</context>
1351
<context>server</context>
1352
<context>location</context>
1353
<appeared-in>1.7.11</appeared-in>
1354
1355
<para>
1356
Разрешает или запрещает использовать буферизацию тела запроса клиента.
1357
</para>
1358
1359
<para>
1360
Если буферизация включена, то тело запроса полностью
1361
<link doc="ngx_http_core_module.xml" id="client_body_buffer_size">читается</link>
1362
от клиента перед отправкой запроса на SCGI-сервер.
1363
</para>
1364
1365
<para>
1366
Если буферизация выключена, то тело запроса отправляется
1367
на SCGI-сервер сразу же по мере его поступления.
1368
В этом случае запрос не может быть передан
1369
<link id="scgi_next_upstream">следующему серверу</link>,
1370
если nginx уже начал отправку тела запроса.
1371
</para>
1372
1373
<para>
1374
Если для отправки тела исходного запроса используется HTTP/1.1
1375
и передача данных частями (chunked transfer encoding),
1376
то тело запроса буферизуется независимо от значения директивы.
1377
</para>
1378
1379
</directive>
1380
1381
1382
<directive name="scgi_request_dynamic">
1383
<syntax><literal>on</literal> | <literal>off</literal></syntax>
1384
<default>off</default>
1385
<context>http</context>
1386
<context>server</context>
1387
<context>location</context>
1388
<appeared-in>1.29.3</appeared-in>
1389
1390
<para>
1391
Разрешает или запрещает создание отдельного экземпляра запроса
1392
для каждого SCGI-сервера.
1393
По умолчанию для всех SCGI-серверов используется единый запрос.
1394
Если разрешено, то для каждого сервера создаётся отдельный экземпляр запроса,
1395
что позволяет кастомизировать запрос для конкретного сервера.
1396
</para>
1397
1398
<para>
1399
<note>
1400
Директива доступна как часть
1401
<commercial_version>коммерческой подписки</commercial_version>.
1402
</note>
1403
</para>
1404
1405
</directive>
1406
1407
1408
<directive name="scgi_send_timeout">
1409
<syntax><value>время</value></syntax>
1410
<default>60s</default>
1411
<context>http</context>
1412
<context>server</context>
1413
<context>location</context>
1414
1415
<para>
1416
Задаёт таймаут при передаче запроса SCGI-серверу.
1417
Таймаут устанавливается не на всю передачу запроса,
1418
а только между двумя операциями записи.
1419
Если по истечении этого времени SCGI-сервер не примет новых данных,
1420
соединение закрывается.
1421
</para>
1422
1423
</directive>
1424
1425
1426
<directive name="scgi_socket_keepalive">
1427
<syntax><literal>on</literal> | <literal>off</literal></syntax>
1428
<default>off</default>
1429
<context>http</context>
1430
<context>server</context>
1431
<context>location</context>
1432
<appeared-in>1.15.6</appeared-in>
1433
1434
<para>
1435
Конфигурирует поведение “TCP keepalive”
1436
для исходящих соединений к SCGI-серверу.
1437
По умолчанию для сокета действуют настройки операционной системы.
1438
Если указано значение “<literal>on</literal>”, то
1439
для сокета включается параметр <c-def>SO_KEEPALIVE</c-def>.
1440
</para>
1441
1442
</directive>
1443
1444
1445
<directive name="scgi_store">
1446
<syntax>
1447
<literal>on</literal> |
1448
<literal>off</literal> |
1449
<value>строка</value></syntax>
1450
<default>off</default>
1451
<context>http</context>
1452
<context>server</context>
1453
<context>location</context>
1454
1455
<para>
1456
Разрешает сохранение на диск файлов.
1457
Параметр <literal>on</literal> сохраняет файлы в соответствии с путями,
1458
указанными в директивах
1459
<link doc="ngx_http_core_module.xml" id="alias"/> или
1460
<link doc="ngx_http_core_module.xml" id="root"/>.
1461
Параметр <literal>off</literal> запрещает сохранение файлов.
1462
Кроме того, имя файла можно задать явно с помощью строки с переменными:
1463
<example>
1464
scgi_store /data/www$original_uri;
1465
</example>
1466
</para>
1467
1468
<para>
1469
Время изменения файлов выставляется согласно полученному полю
1470
<header>Last-Modified</header> в заголовке ответа.
1471
Ответ сначала записывается во временный файл, а потом этот файл
1472
переименовывается.
1473
Начиная с версии 0.8.9 временный файл и постоянное место хранения ответа
1474
могут располагаться на разных файловых системах.
1475
Однако нужно учитывать,
1476
что в этом случае вместо дешёвой операции переименовывания в пределах
1477
одной файловой системы файл копируется с одной файловой системы на другую.
1478
Поэтому лучше, если сохраняемые файлы будут находиться на той же файловой
1479
системе, что и каталог с временными файлами, задаваемый директивой
1480
<link id="scgi_temp_path"/> для данного location.
1481
</para>
1482
1483
<para>
1484
Директиву можно использовать для создания локальных копий статических
1485
неизменяемых файлов, например, так:
1486
<example>
1487
location /images/ {
1488
root /data/www;
1489
error_page 404 = /fetch$uri;
1490
}
1491
1492
location /fetch/ {
1493
internal;
1494
1495
scgi_pass backend:9000;
1496
...
1497
1498
scgi_store on;
1499
scgi_store_access user:rw group:rw all:r;
1500
scgi_temp_path /data/temp;
1501
1502
alias /data/www/;
1503
}
1504
</example>
1505
</para>
1506
1507
</directive>
1508
1509
1510
<directive name="scgi_store_access">
1511
<syntax><value>пользователи</value>:<value>права</value> ...</syntax>
1512
<default>user:rw</default>
1513
<context>http</context>
1514
<context>server</context>
1515
<context>location</context>
1516
1517
<para>
1518
Задаёт права доступа для создаваемых файлов и каталогов, например,
1519
<example>
1520
scgi_store_access user:rw group:rw all:r;
1521
</example>
1522
</para>
1523
1524
<para>
1525
Если заданы какие-либо права для <literal>group</literal> или
1526
<literal>all</literal>, то права для <literal>user</literal>
1527
указывать необязательно:
1528
<example>
1529
scgi_store_access group:rw all:r;
1530
</example>
1531
</para>
1532
1533
</directive>
1534
1535
1536
<directive name="scgi_temp_file_write_size">
1537
<syntax><value>размер</value></syntax>
1538
<default>8k|16k</default>
1539
<context>http</context>
1540
<context>server</context>
1541
<context>location</context>
1542
1543
<para>
1544
Ограничивает <value>размер</value> данных, сбрасываемых во временный файл
1545
за один раз, при включённой буферизации ответов SCGI-сервера
1546
во временные файлы.
1547
По умолчанию <value>размер</value> ограничен двумя буферами, заданными
1548
директивами <link id="scgi_buffer_size"/> и <link id="scgi_buffers"/>.
1549
Максимальный размер временного файла задаётся директивой
1550
<link id="scgi_max_temp_file_size"/>.
1551
</para>
1552
1553
</directive>
1554
1555
1556
<directive name="scgi_temp_path">
1557
<syntax>
1558
<value>путь</value>
1559
[<value>уровень1</value>
1560
[<value>уровень2</value>
1561
[<value>уровень3</value>]]]</syntax>
1562
<default>scgi_temp</default>
1563
<context>http</context>
1564
<context>server</context>
1565
<context>location</context>
1566
1567
<para>
1568
Задаёт имя каталога для хранения временных файлов с данными,
1569
полученными от SCGI-серверов.
1570
В каталоге может использоваться иерархия подкаталогов до трёх уровней.
1571
Например, при такой конфигурации
1572
<example>
1573
scgi_temp_path /spool/nginx/scgi_temp 1 2;
1574
</example>
1575
временный файл будет следующего вида:
1576
<example>
1577
/spool/nginx/scgi_temp/<emphasis>7</emphasis>/<emphasis>45</emphasis>/00000123<emphasis>457</emphasis>
1578
</example>
1579
</para>
1580
1581
<para>
1582
См. также параметр <literal>use_temp_path</literal> директивы
1583
<link id="scgi_cache_path"/>.
1584
</para>
1585
1586
</directive>
1587
1588
</section>
1589
1590
</module>
1591
1592