Mercurial > hg > nginx-site
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> |