comparison xml/ru/docs/http/ngx_http_scgi_module.xml @ 1183:1ce4912eb182

Translated SCGI module documentation into Russian.
author Yaroslav Zhuravlev <yar@nginx.com>
date Thu, 08 May 2014 17:54:39 +0400
parents
children 55857cbf562d
comparison
equal deleted inserted replaced
1182:ec1097156f81 1183:1ce4912eb182
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="1">
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_bind">
42 <syntax><value>адрес</value> | <literal>off</literal></syntax>
43 <default/>
44 <context>http</context>
45 <context>server</context>
46 <context>location</context>
47
48 <para>
49 Задаёт локальный IP-<value>адрес</value>, который будет использоваться в
50 исходящих соединениях с SCGI-сервером.
51 В значении параметра допустимо использование переменных (1.3.12).
52 Специальное значение <literal>off</literal> (1.3.12) отменяет действие
53 унаследованной с предыдущего уровня конфигурации
54 директивы <literal>scgi_bind</literal>, позволяя системе
55 самостоятельно выбирать локальный IP-адрес.
56 </para>
57
58 </directive>
59
60
61 <directive name="scgi_buffer_size">
62 <syntax><value>размер</value></syntax>
63 <default>4k|8k</default>
64 <context>http</context>
65 <context>server</context>
66 <context>location</context>
67
68 <para>
69 Задаёт <value>размер</value> буфера, в который будет читаться
70 первая часть ответа, получаемого от SCGI-сервера.
71 В этой части ответа находится, как правило, небольшой заголовок ответа.
72 По умолчанию размер буфера равен размеру одного буфера в директиве
73 <link id="scgi_buffers"/>, однако его можно сделать меньше.
74 </para>
75
76 </directive>
77
78
79 <directive name="scgi_buffering">
80 <syntax><literal>on</literal> | <literal>off</literal></syntax>
81 <default>on</default>
82 <context>http</context>
83 <context>server</context>
84 <context>location</context>
85
86 <para>
87 Разрешает или запрещает использовать буферизацию ответов SCGI-сервера.
88 </para>
89
90 <para>
91 Если буферизация включена, то nginx принимает ответ SCGI-сервера
92 как можно быстрее, сохраняя его в буферы, заданные директивами
93 <link id="scgi_buffer_size"/> и <link id="scgi_buffers"/>.
94 Если ответ не вмещается целиком в память, то его часть может быть записана
95 на диск во <link id="scgi_temp_path">временный файл</link>.
96 Запись во временные файлы контролируется директивами
97 <link id="scgi_max_temp_file_size"/> и
98 <link id="scgi_temp_file_write_size"/>.
99 </para>
100
101 <para>
102 Если буферизация выключена, то ответ синхронно передаётся клиенту сразу же
103 по мере его поступления.
104 nginx не пытается считать весь ответ SCGI-сервера.
105 Максимальный размер данных, который nginx может принять от сервера
106 за один раз, задаётся директивой <link id="scgi_buffer_size"/>.
107 </para>
108
109 <para>
110 Буферизация может быть также включена или выключена путём передачи
111 значения “<literal>yes</literal>” или “<literal>no</literal>” в поле
112 <header>X-Accel-Buffering</header> заголовка ответа.
113 Эту возможность можно запретить с помощью директивы
114 <link id="scgi_ignore_headers"/>.
115 </para>
116
117 </directive>
118
119
120 <directive name="scgi_buffers">
121 <syntax><value>число</value> <value>размер</value></syntax>
122 <default>8 4k|8k</default>
123 <context>http</context>
124 <context>server</context>
125 <context>location</context>
126
127 <para>
128 Задаёт <value>число</value> и <value>размер</value> буферов
129 для одного соединения,
130 в которые будет читаться ответ, получаемый от SCGI-сервера.
131 По умолчанию размер одного буфера равен размеру страницы.
132 В зависимости от платформы это или 4K, или 8K.
133 </para>
134
135 </directive>
136
137
138 <directive name="scgi_busy_buffers_size">
139 <syntax><value>размер</value></syntax>
140 <default>8k|16k</default>
141 <context>http</context>
142 <context>server</context>
143 <context>location</context>
144
145 <para>
146 При включённой <link id="scgi_buffering">буферизации</link> ответов
147 SCGI-сервера, ограничивает суммарный <value>размер</value>
148 буферов, которые могут быть заняты для отправки ответа клиенту, пока
149 ответ ещё не прочитан целиком.
150 Оставшиеся буферы тем временем могут использоваться для чтения ответа
151 и, при необходимости, буферизации части ответа во временный файл.
152 По умолчанию <value>размер</value> ограничен двумя буферами, заданными
153 директивами <link id="scgi_buffer_size"/> и <link id="scgi_buffers"/>.
154 </para>
155
156 </directive>
157
158
159 <directive name="scgi_cache">
160 <syntax><value>зона</value> | <literal>off</literal></syntax>
161 <default>off</default>
162 <context>http</context>
163 <context>server</context>
164 <context>location</context>
165
166 <para>
167 Задаёт зону разделяемой памяти, используемой для кэширования.
168 Одна и та же зона может использоваться в нескольких местах.
169 Параметр <literal>off</literal> запрещает кэширование, унаследованное
170 с предыдущего уровня конфигурации.
171 </para>
172
173 </directive>
174
175
176 <directive name="scgi_cache_bypass">
177 <syntax><value>строка</value> ...</syntax>
178 <default/>
179 <context>http</context>
180 <context>server</context>
181 <context>location</context>
182
183 <para>
184 Задаёт условия, при которых ответ не будет браться из кэша.
185 Если значение хотя бы одного из строковых параметров непустое и не равно “0”,
186 то ответ не берётся из кэша:
187 <example>
188 scgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
189 scgi_cache_bypass $http_pragma $http_authorization;
190 </example>
191 Можно использовать совместно с директивой <link id="scgi_no_cache"/>.
192 </para>
193
194 </directive>
195
196
197 <directive name="scgi_cache_key">
198 <syntax><value>строка</value></syntax>
199 <default/>
200 <context>http</context>
201 <context>server</context>
202 <context>location</context>
203
204 <para>
205 Задаёт ключ для кэширования, например,
206 <example>
207 scgi_cache_key localhost:9000$request_uri;
208 </example>
209 </para>
210
211 </directive>
212
213
214 <directive name="scgi_cache_lock">
215 <syntax><literal>on</literal> | <literal>off</literal></syntax>
216 <default>off</default>
217 <context>http</context>
218 <context>server</context>
219 <context>location</context>
220 <appeared-in>1.1.12</appeared-in>
221
222 <para>
223 Если включено, одновременно только одному запросу будет позволено
224 заполнить новый элемент кэша, идентифицируемый согласно директиве
225 <link id="scgi_cache_key"/>, передав запрос на SCGI-сервер.
226 Остальные запросы этого же элемента будут либо ожидать
227 появления ответа в кэше, либо освобождения блокировки
228 этого элемента, в течение времени, заданного директивой
229 <link id="scgi_cache_lock_timeout"/>.
230 </para>
231
232 </directive>
233
234
235 <directive name="scgi_cache_lock_timeout">
236 <syntax><value>время</value></syntax>
237 <default>5s</default>
238 <context>http</context>
239 <context>server</context>
240 <context>location</context>
241 <appeared-in>1.1.12</appeared-in>
242
243 <para>
244 Задаёт таймаут для <link id="scgi_cache_lock"/>.
245 </para>
246
247 </directive>
248
249
250 <directive name="scgi_cache_methods">
251 <syntax>
252 <literal>GET</literal> |
253 <literal>HEAD</literal> |
254 <literal>POST</literal>
255 ...</syntax>
256 <default>GET HEAD</default>
257 <context>http</context>
258 <context>server</context>
259 <context>location</context>
260
261 <para>
262 Если метод запроса клиента указан в этой директиве,
263 то ответ будет закэширован.
264 Методы “<literal>GET</literal>” и “<literal>HEAD</literal>” всегда добавляются
265 в список, но тем не менее рекомендуется перечислять их явно.
266 См. также директиву <link id="scgi_no_cache"/>.
267 </para>
268
269 </directive>
270
271
272 <directive name="scgi_cache_min_uses">
273 <syntax><value>число</value></syntax>
274 <default>1</default>
275 <context>http</context>
276 <context>server</context>
277 <context>location</context>
278
279 <para>
280 Задаёт <value>число</value> запросов, после которого ответ будет закэширован.
281 </para>
282
283 </directive>
284
285
286 <directive name="scgi_cache_path">
287 <syntax>
288 <value>путь</value>
289 [<literal>levels</literal>=<value>уровни</value>]
290 <literal>keys_zone</literal>=<value>имя</value>:<value>размер</value>
291 [<literal>inactive</literal>=<value>время</value>]
292 [<literal>max_size</literal>=<value>размер</value>]
293 [<literal>loader_files</literal>=<value>число</value>]
294 [<literal>loader_sleep</literal>=<value>время</value>]
295 [<literal>loader_threshold</literal>=<value>время</value>]</syntax>
296 <default/>
297 <context>http</context>
298
299 <para>
300 Задаёт путь и другие параметры кэша.
301 Данные кэша хранятся в файлах.
302 Ключом и именем файла в кэше является результат функции MD5
303 от проксированного URL.
304 Параметр <literal>levels</literal> задаёт уровни иерархии кэша,
305 например, при использовании
306 <example>
307 scgi_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
308 </example>
309 имена файлов в кэше будут такого вида:
310 <example>
311 /data/nginx/cache/<emphasis>c</emphasis>/<emphasis>29</emphasis>/b7f54b2df7773722d382f4809d650<emphasis>29c</emphasis>
312 </example>
313 </para>
314
315 <para>
316 Кэшируемый ответ сначала записывается во временный файл, а потом этот файл
317 переименовывается.
318 Начиная с версии 0.8.9, временные файлы и кэш
319 могут располагаться на разных файловых системах.
320 Однако нужно учитывать,
321 что в этом случае вместо дешёвой операции переименовывания в пределах
322 одной файловой системы файл копируется с одной файловой системы на другую.
323 Поэтому лучше, если кэш будет находиться на той же файловой
324 системе, что и каталог с временными файлами, задаваемый директивой
325 <link id="scgi_temp_path"/> для данного location.
326 </para>
327
328 <para>
329 Кроме того, все активные ключи и информация о данных хранятся в зоне
330 разделяемой памяти, <value>имя</value> и <value>размер</value> которой
331 задаются параметром <literal>keys_zone</literal>.
332 Если к данным кэша не обращаются в течение времени, заданного параметром
333 <literal>inactive</literal>, то данные удаляются, независимо от их свежести.
334 По умолчанию <literal>inactive</literal> равен 10 минутам.
335 </para>
336
337 <para>
338 Специальный процесс “cache manager” следит за максимальным размером кэша,
339 заданным параметром <literal>max_size</literal>, и при превышении
340 его размеров удаляет наименее востребованные данные.
341 </para>
342
343 <para>
344 Через минуту после старта активируется специальный процесс “cache loader”,
345 который загружает в зону кэша информацию о ранее закэшированных данных,
346 хранящихся на файловой системе.
347 Загрузка происходит итерациями.
348 За одну итерацию загружается не более <literal>loader_files</literal>
349 элементов (по умолчанию 100).
350 Кроме того, время работы одной итерации ограничено параметром
351 <literal>loader_threshold</literal> (по умолчанию 200 миллисекунд).
352 Между итерациями делается пауза на время, заданное параметром
353 <literal>loader_sleep</literal> (по умолчанию 50 миллисекунд).
354 </para>
355
356 </directive>
357
358
359 <directive name="scgi_cache_purge">
360 <syntax>строка ...</syntax>
361 <default/>
362 <context>http</context>
363 <context>server</context>
364 <context>location</context>
365 <appeared-in>1.5.7</appeared-in>
366
367 <para>
368 Задаёт условия, при которых запрос будет считаться запросом
369 на очистку кэша.
370 Если значение хотя бы одного из строковых параметров непустое и не равно “0”,
371 то запись в кэше с соответствующим
372 <link id="scgi_cache_key">ключом кэширования</link> удаляется.
373 В результате успешной операции возвращается ответ с кодом
374 <http-status code="204" text="No Content"/>.
375 </para>
376
377 <para>
378 Если <link id="scgi_cache_key">ключ кэширования</link>
379 запроса на очистку заканчивается
380 звёздочкой (“<literal>*</literal>”), то все записи в кэше, соответствующие
381 этой маске, будут удалены из кэша.
382 </para>
383
384 <para>
385 Пример конфигурации:
386 <example>
387 scgi_cache_path /data/nginx/cache keys_zone=cache_zone:10m;
388
389 map $request_method $purge_method {
390 PURGE 1;
391 default 0;
392 }
393
394 server {
395 ...
396 location / {
397 scgi_pass http://backend;
398 scgi_cache cache_zone;
399 scgi_cache_key $uri;
400 scgi_cache_purge $purge_method;
401 }
402 }
403 </example>
404 <note>
405 Функциональность доступна как часть
406 <commercial_version>коммерческой подписки</commercial_version>.
407 </note>
408 </para>
409
410 </directive>
411
412
413 <directive name="scgi_cache_revalidate">
414 <syntax><literal>on</literal> | <literal>off</literal></syntax>
415 <default>off</default>
416 <context>http</context>
417 <context>server</context>
418 <context>location</context>
419 <appeared-in>1.5.7</appeared-in>
420
421 <para>
422 Разрешает ревалидацию просроченных элементов кэша при помощи
423 условных запросов с полем заголовка <header>If-Modified-Since</header>.
424 </para>
425
426 </directive>
427
428
429 <directive name="scgi_cache_use_stale">
430 <syntax>
431 <literal>error</literal> |
432 <literal>timeout</literal> |
433 <literal>invalid_header</literal> |
434 <literal>updating</literal> |
435 <literal>http_500</literal> |
436 <literal>http_503</literal> |
437 <literal>http_403</literal> |
438 <literal>http_404</literal> |
439 <literal>off</literal>
440 ...</syntax>
441 <default>off</default>
442 <context>http</context>
443 <context>server</context>
444 <context>location</context>
445
446 <para>
447 Определяет, в каких случаях можно использовать устаревший закэшированный ответ,
448 если при работе с SCGI-сервером возникла ошибка.
449 Параметры директивы совпадают с параметрами
450 директивы <link id="scgi_next_upstream"/>.
451 </para>
452
453 <para>
454 Кроме того, дополнительный параметр <literal>updating</literal>
455 разрешает использовать устаревший закэшированный ответ,
456 если на данный момент он уже обновляется.
457 Это позволяет минимизировать число обращений к SCGI-серверам
458 при обновлении закэшированных данных.
459 </para>
460
461 <para>
462 Чтобы минимизировать число обращений к SCGI-серверам при
463 заполнении нового элемента кэша, можно воспользоваться директивой
464 <link id="scgi_cache_lock"/>.
465 </para>
466
467 </directive>
468
469
470 <directive name="scgi_cache_valid">
471 <syntax>[<value>код</value> ...] <value>время</value></syntax>
472 <default/>
473 <context>http</context>
474 <context>server</context>
475 <context>location</context>
476
477 <para>
478 Задаёт время кэширования для разных кодов ответа.
479 Например, директивы
480 <example>
481 scgi_cache_valid 200 302 10m;
482 scgi_cache_valid 404 1m;
483 </example>
484 задают время кэширования 10 минут для ответов с кодами 200 и 302
485 и 1 минуту для ответов с кодом 404.
486 </para>
487
488 <para>
489 Если указано только <value>время</value> кэширования,
490 <example>
491 scgi_cache_valid 5m;
492 </example>
493 то кэшируются только ответы 200, 301 и 302.
494 </para>
495
496 <para>
497 Кроме того, можно кэшировать любые ответы с помощью параметра
498 <literal>any</literal>:
499 <example>
500 scgi_cache_valid 200 302 10m;
501 scgi_cache_valid 301 1h;
502 scgi_cache_valid any 1m;
503 </example>
504 </para>
505
506 <para>
507 Параметры кэширования могут также быть заданы непосредственно
508 в заголовке ответа.
509 Такой способ приоритетнее, чем задание времени кэширования с помощью директивы.
510 Поле заголовка <header>X-Accel-Expires</header> задаёт время кэширования
511 ответа в секундах.
512 Значение 0 запрещает кэшировать ответ.
513 Если значение начинается с префикса <literal>@</literal>, оно задаёт абсолютное
514 время в секундах с начала эпохи, до которого ответ может быть закэширован.
515 Если в заголовке нет поля <header>X-Accel-Expires</header>,
516 параметры кэширования определяются по полям заголовка
517 <header>Expires</header> или <header>Cache-Control</header>.
518 Ответ, в заголовке которого есть поле <header>Set-Cookie</header>,
519 не будет кэшироваться.
520 Обработка одного или более из этих полей заголовка может быть отключена
521 при помощи директивы <link id="scgi_ignore_headers"/>.
522 </para>
523
524 </directive>
525
526
527 <directive name="scgi_connect_timeout">
528 <syntax><value>время</value></syntax>
529 <default>60s</default>
530 <context>http</context>
531 <context>server</context>
532 <context>location</context>
533
534 <para>
535 Задаёт таймаут для установления соединения с SCGI-сервером.
536 Необходимо иметь в виду, что этот таймаут обычно не может превышать 75 секунд.
537 </para>
538
539 </directive>
540
541
542 <directive name="scgi_hide_header">
543 <syntax><value>поле</value></syntax>
544 <default/>
545 <context>http</context>
546 <context>server</context>
547 <context>location</context>
548
549 <para>
550 По умолчанию
551 nginx не передаёт клиенту поля заголовка <header>Status</header> и
552 <header>X-Accel-...</header> из ответа SCGI-сервера.
553 Директива <literal>scgi_hide_header</literal> задаёт дополнительные поля,
554 которые не будут передаваться.
555 Если же передачу полей нужно разрешить, можно воспользоваться
556 директивой <link id="scgi_pass_header"/>.
557 </para>
558
559 </directive>
560
561
562 <directive name="scgi_ignore_client_abort">
563 <syntax><literal>on</literal> | <literal>off</literal></syntax>
564 <default>off</default>
565 <context>http</context>
566 <context>server</context>
567 <context>location</context>
568
569 <para>
570 Определяет, закрывать ли соединение с SCGI-сервером
571 в случае, если клиент закрыл соединение, не дождавшись ответа.
572 </para>
573
574 </directive>
575
576
577 <directive name="scgi_ignore_headers">
578 <syntax><value>поле</value> ...</syntax>
579 <default/>
580 <context>http</context>
581 <context>server</context>
582 <context>location</context>
583
584 <para>
585 Запрещает обработку некоторых полей заголовка из ответа SCGI-сервера.
586 В директиве можно указать поля <header>X-Accel-Redirect</header>,
587 <header>X-Accel-Expires</header>, <header>X-Accel-Limit-Rate</header> (1.1.6),
588 <header>X-Accel-Buffering</header> (1.1.6),
589 <header>X-Accel-Charset</header> (1.1.6), <header>Expires</header>,
590 <header>Cache-Control</header> и <header>Set-Cookie</header> (0.8.44).
591 </para>
592
593 <para>
594 Если не запрещено, обработка этих полей заголовка заключается в следующем:
595 <list type="bullet" compact="no">
596
597 <listitem>
598 <header>X-Accel-Expires</header>, <header>Expires</header>,
599 <header>Cache-Control</header> и <header>Set-Cookie</header>
600 задают параметры <link id="scgi_cache_valid">кэширования</link> ответа;
601 </listitem>
602
603 <listitem>
604 <header>X-Accel-Redirect</header> производит
605 <link doc="ngx_http_core_module.xml" id="internal">внутреннее
606 перенаправление</link> на указанный URI;
607 </listitem>
608
609 <listitem>
610 <header>X-Accel-Limit-Rate</header> задаёт
611 <link doc="ngx_http_core_module.xml" id="limit_rate">ограничение
612 скорости</link> передачи ответа клиенту;
613 </listitem>
614
615 <listitem>
616 <header>X-Accel-Buffering</header> включает или выключает
617 <link id="scgi_buffering">буферизацию</link> ответа;
618 </listitem>
619
620 <listitem>
621 <header>X-Accel-Charset</header> задаёт желаемую
622 <link doc="ngx_http_charset_module.xml" id="charset">кодировку</link>
623 ответа.
624 </listitem>
625
626 </list>
627 </para>
628
629 </directive>
630
631
632 <directive name="scgi_intercept_errors">
633 <syntax><literal>on</literal> | <literal>off</literal></syntax>
634 <default>off</default>
635 <context>http</context>
636 <context>server</context>
637 <context>location</context>
638
639 <para>
640 Определяет, передавать ли клиенту ответы SCGI-сервера с кодом
641 больше либо равным 300, или же перенаправлять их на обработку nginx’у с помощью
642 директивы <link doc="ngx_http_core_module.xml" id="error_page"/>.
643 </para>
644
645 </directive>
646
647
648 <directive name="scgi_max_temp_file_size">
649 <syntax><value>размер</value></syntax>
650 <default>1024m</default>
651 <context>http</context>
652 <context>server</context>
653 <context>location</context>
654
655 <para>
656 Если включена <link id="scgi_buffering">буферизация</link> ответов
657 SCGI-сервера, и ответ не вмещается целиком в буферы,
658 заданные директивами <link id="scgi_buffer_size"/> и
659 <link id="scgi_buffers"/>, часть ответа может быть записана во временный файл.
660 Эта директива задаёт максимальный <value>размер</value> временного файла.
661 Размер данных, сбрасываемых во временный файл за один раз, задаётся
662 директивой <link id="scgi_temp_file_write_size"/>.
663 </para>
664
665 <para>
666 Значение 0 отключает возможность буферизации ответов во временные файлы.
667 </para>
668
669 </directive>
670
671
672 <directive name="scgi_next_upstream">
673 <syntax>
674 <literal>error</literal> |
675 <literal>timeout</literal> |
676 <literal>invalid_header</literal> |
677 <literal>http_500</literal> |
678 <literal>http_503</literal> |
679 <literal>http_403</literal> |
680 <literal>http_404</literal> |
681 <literal>off</literal>
682 ...</syntax>
683 <default>error timeout</default>
684 <context>http</context>
685 <context>server</context>
686 <context>location</context>
687
688 <para>
689 Определяет, в каких случаях запрос будет передан следующему серверу:
690 <list type="tag">
691
692 <tag-name><literal>error</literal></tag-name>
693 <tag-desc>произошла ошибка соединения с сервером, передачи ему запроса или
694 чтения заголовка ответа сервера;</tag-desc>
695
696 <tag-name><literal>timeout</literal></tag-name>
697 <tag-desc>произошёл таймаут во время соединения с сервером,
698 передачи ему запроса или чтения заголовка ответа сервера;</tag-desc>
699
700 <tag-name><literal>invalid_header</literal></tag-name>
701 <tag-desc>сервер вернул пустой или неверный ответ;</tag-desc>
702
703 <tag-name><literal>http_500</literal></tag-name>
704 <tag-desc>сервер вернул ответ с кодом 500;</tag-desc>
705
706 <tag-name><literal>http_503</literal></tag-name>
707 <tag-desc>сервер вернул ответ с кодом 503;</tag-desc>
708
709 <tag-name><literal>http_403</literal></tag-name>
710 <tag-desc>сервер вернул ответ с кодом 403;</tag-desc>
711
712 <tag-name><literal>http_404</literal></tag-name>
713 <tag-desc>сервер вернул ответ с кодом 404;</tag-desc>
714
715 <tag-name><literal>off</literal></tag-name>
716 <tag-desc>запрещает передачу запроса следующему серверу.</tag-desc>
717
718 </list>
719 </para>
720
721 <para>
722 Необходимо понимать, что передача запроса следующему серверу возможна
723 только при условии, что клиенту ещё ничего не передавалось.
724 То есть, если ошибка или таймаут возникли в середине передачи ответа,
725 то исправить это уже невозможно.
726 </para>
727
728 <para>
729 Директива также определяет, что считается неудачной попыткой работы с
730 <link doc="ngx_http_upstream_module.xml" id="server">сервером</link>.
731 Случаи <literal>error</literal>, <literal>timeout</literal> и
732 <literal>invalid_header</literal>
733 всегда считаются неудачными попытками, даже если они не указаны в директиве.
734 Случаи <literal>http_500</literal> и <literal>http_503</literal>
735 считаются неудачными попытками, только если они указаны в директиве.
736 Случаи <literal>http_403</literal> и <literal>http_404</literal>
737 никогда не считаются неудачными попытками.
738 </para>
739
740 </directive>
741
742
743 <directive name="scgi_no_cache">
744 <syntax><value>строка</value> ...</syntax>
745 <default/>
746 <context>http</context>
747 <context>server</context>
748 <context>location</context>
749
750 <para>
751 Задаёт условия, при которых ответ не будет сохраняться в кэш.
752 Если значение хотя бы одного из строковых параметров непустое и не равно “0”,
753 то ответ не будет сохранён:
754 <example>
755 scgi_no_cache $cookie_nocache $arg_nocache$arg_comment;
756 scgi_no_cache $http_pragma $http_authorization;
757 </example>
758 Можно использовать совместно с директивой <link id="scgi_cache_bypass"/>.
759 </para>
760
761 </directive>
762
763
764 <directive name="scgi_param">
765 <syntax>
766 <value>параметр</value> <value>значение</value>
767 [<literal>if_not_empty</literal>]</syntax>
768 <default/>
769 <context>http</context>
770 <context>server</context>
771 <context>location</context>
772
773 <para>
774 Задаёт <value>параметр</value>, который будет передаваться SCGI-серверу.
775 В качестве значения можно использовать текст, переменные и их комбинации.
776 Директивы наследуются с предыдущего уровня при условии, что на данном
777 уровне не описаны свои директивы <literal>scgi_param</literal>.
778 </para>
779
780 <para>
781 Стандартные
782 <link url="http://tools.ietf.org/html/rfc3875#section-4.1">переменные
783 окружения CGI</link>
784 должны передаваться как заголовки SCGI, см. файл <path>scgi_params</path>
785 из дистрибутива:
786 <example>
787 location / {
788 include scgi_params;
789 ...
790 }
791 </example>
792 </para>
793
794 <para>
795 Если директива указана с <literal>if_not_empty</literal> (1.1.11),
796 то такой параметр с пустым значением передаваться на сервер не будет:
797 <example>
798 scgi_param HTTPS $https if_not_empty;
799 </example>
800 </para>
801
802 </directive>
803
804
805 <directive name="scgi_pass">
806 <syntax><value>адрес</value></syntax>
807 <default/>
808 <context>location</context>
809 <context>if в location</context>
810
811 <para>
812 Задаёт адрес SCGI-сервера.
813 Адрес может быть указан в виде доменного имени или адреса, и порта, например,
814 <example>
815 scgi_pass localhost:9000;
816 </example>
817 или в виде пути UNIX-сокета:
818 <example>
819 scgi_pass unix:/tmp/scgi.socket;
820 </example>
821 </para>
822
823 <para>
824 Если доменному имени соответствует несколько адресов, то все они будут
825 использоваться по очереди (round-robin).
826 И, кроме того, адрес может быть
827 <link doc="ngx_http_upstream_module.xml">группой серверов</link>.
828 </para>
829
830 </directive>
831
832
833 <directive name="scgi_pass_header">
834 <syntax><value>поле</value></syntax>
835 <default/>
836 <context>http</context>
837 <context>server</context>
838 <context>location</context>
839
840 <para>
841 Разрешает передавать от SCGI-сервера клиенту
842 <link id="scgi_hide_header">запрещённые для передачи</link> поля заголовка.
843 </para>
844
845 </directive>
846
847
848 <directive name="scgi_read_timeout">
849 <syntax><value>время</value></syntax>
850 <default>60s</default>
851 <context>http</context>
852 <context>server</context>
853 <context>location</context>
854
855 <para>
856 Задаёт таймаут при чтении ответа SCGI-сервера.
857 Таймаут устанавливается не на всю передачу ответа,
858 а только между двумя операциями чтения.
859 Если по истечении этого времени SCGI-сервер ничего не передаст,
860 соединение закрывается.
861 </para>
862
863 </directive>
864
865
866 <directive name="scgi_pass_request_body">
867 <syntax><literal>on</literal> | <literal>off</literal></syntax>
868 <default>on</default>
869 <context>http</context>
870 <context>server</context>
871 <context>location</context>
872
873 <para>
874 Позволяет запретить передачу исходного тела запроса
875 на SCGI-сервер.
876 См. также директиву <link id="scgi_pass_request_headers"/>.
877 </para>
878
879 </directive>
880
881
882 <directive name="scgi_pass_request_headers">
883 <syntax><literal>on</literal> | <literal>off</literal></syntax>
884 <default>on</default>
885 <context>http</context>
886 <context>server</context>
887 <context>location</context>
888
889 <para>
890 Позволяет запретить передачу полей заголовка исходного запроса на
891 SCGI-сервер.
892 См. также директивы <link id="scgi_pass_request_body"/>.
893 </para>
894
895 </directive>
896
897
898 <directive name="scgi_send_timeout">
899 <syntax><value>время</value></syntax>
900 <default>60s</default>
901 <context>http</context>
902 <context>server</context>
903 <context>location</context>
904
905 <para>
906 Задаёт таймаут при передаче запроса SCGI-серверу.
907 Таймаут устанавливается не на всю передачу запроса,
908 а только между двумя операциями записи.
909 Если по истечении этого времени SCGI-сервер не примет новых данных,
910 соединение закрывается.
911 </para>
912
913 </directive>
914
915
916 <directive name="scgi_store">
917 <syntax>
918 <literal>on</literal> |
919 <literal>off</literal> |
920 <value>строка</value></syntax>
921 <default>off</default>
922 <context>http</context>
923 <context>server</context>
924 <context>location</context>
925
926 <para>
927 Разрешает сохранение на диск файлов.
928 Параметр <literal>on</literal> сохраняет файлы в соответствии с путями,
929 указанными в директивах
930 <link doc="ngx_http_core_module.xml" id="alias"/> или
931 <link doc="ngx_http_core_module.xml" id="root"/>.
932 Параметр <literal>off</literal> запрещает сохранение файлов.
933 Кроме того, имя файла можно задать явно с помощью строки с переменными:
934 <example>
935 scgi_store /data/www$original_uri;
936 </example>
937 </para>
938
939 <para>
940 Время изменения файлов выставляется согласно полученному полю
941 <header>Last-Modified</header> в заголовке ответа.
942 Ответ сначала записывается во временный файл, а потом этот файл
943 переименовывается.
944 Начиная с версии 0.8.9, временный файл и постоянное место хранения ответа
945 могут располагаться на разных файловых системах.
946 Однако нужно учитывать,
947 что в этом случае вместо дешёвой операции переименовывания в пределах
948 одной файловой системы файл копируется с одной файловой системы на другую.
949 Поэтому лучше, если сохраняемые файлы будут находиться на той же файловой
950 системе, что и каталог с временными файлами, задаваемый директивой
951 <link id="scgi_temp_path"/> для данного location.
952 </para>
953
954 <para>
955 Директиву можно использовать для создания локальных копий статических
956 неизменяемых файлов, например, так:
957 <example>
958 location /images/ {
959 root /data/www;
960 error_page 404 = /fetch$uri;
961 }
962
963 location /fetch/ {
964 internal;
965
966 scgi_pass backend:9000;
967 ...
968
969 scgi_store on;
970 scgi_store_access user:rw group:rw all:r;
971 scgi_temp_path /data/temp;
972
973 alias /data/www/;
974 }
975 </example>
976 </para>
977
978 </directive>
979
980
981 <directive name="scgi_store_access">
982 <syntax><value>пользователи</value>:<value>права</value> ...</syntax>
983 <default>user:rw</default>
984 <context>http</context>
985 <context>server</context>
986 <context>location</context>
987
988 <para>
989 Задаёт права доступа для создаваемых файлов и каталогов, например,
990 <example>
991 scgi_store_access user:rw group:rw all:r;
992 </example>
993 </para>
994
995 <para>
996 Если заданы какие-либо права для <literal>group</literal> или
997 <literal>all</literal>, то права для <literal>user</literal>
998 указывать необязательно:
999 <example>
1000 scgi_store_access group:rw all:r;
1001 </example>
1002 </para>
1003
1004 </directive>
1005
1006
1007 <directive name="scgi_temp_file_write_size">
1008 <syntax><value>размер</value></syntax>
1009 <default>8k|16k</default>
1010 <context>http</context>
1011 <context>server</context>
1012 <context>location</context>
1013
1014 <para>
1015 Ограничивает <value>размер</value> данных, сбрасываемых во временный файл
1016 за один раз, при включённой буферизации ответов SCGI-сервера
1017 во временные файлы.
1018 По умолчанию <value>размер</value> ограничен двумя буферами, заданными
1019 директивами <link id="scgi_buffer_size"/> и <link id="scgi_buffers"/>.
1020 Максимальный размер временного файла задаётся директивой
1021 <link id="scgi_max_temp_file_size"/>.
1022 </para>
1023
1024 </directive>
1025
1026
1027 <directive name="scgi_temp_path">
1028 <syntax>
1029 <value>путь</value>
1030 [<value>уровень1</value>
1031 [<value>уровень2</value>
1032 [<value>уровень3</value>]]]</syntax>
1033 <default>scgi_temp</default>
1034 <context>http</context>
1035 <context>server</context>
1036 <context>location</context>
1037
1038 <para>
1039 Задаёт имя каталога для хранения временных файлов с данными,
1040 полученными от SCGI-серверов.
1041 В каталоге может использоваться иерархия подкаталогов до трёх уровней.
1042 Например, при такой конфигурации
1043 <example>
1044 scgi_temp_path /spool/nginx/scgi_temp 1 2;
1045 </example>
1046 временный файл будет следующего вида:
1047 <example>
1048 /spool/nginx/scgi_temp/<emphasis>7</emphasis>/<emphasis>45</emphasis>/00000123<emphasis>457</emphasis>
1049 </example>
1050 </para>
1051
1052 </directive>
1053
1054 </section>
1055
1056 </module>