comparison xml/ru/docs/http/ngx_http_uwsgi_module.xml @ 1191:ea85ba147fe9

Mechanically converted SCGI module docs to uwsgi.
author Ruslan Ermilov <ru@nginx.com>
date Sat, 17 May 2014 01:55:03 +0400
parents
children b5268820c3f3
comparison
equal deleted inserted replaced
1190:dd4cfc6ce770 1191:ea85ba147fe9
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_uwsgi_module"
11 link="/ru/docs/http/ngx_http_uwsgi_module.html"
12 lang="ru"
13 rev="1">
14
15 <section id="summary">
16
17 <para>
18 Модуль <literal>ngx_http_uwsgi_module</literal> позволяет передавать
19 запросы uwsgi-серверу.
20 </para>
21
22 </section>
23
24
25 <section id="example" name="Пример конфигурации">
26
27 <para>
28 <example>
29 location / {
30 include uwsgi_params;
31 uwsgi_pass localhost:9000;
32 }
33 </example>
34 </para>
35
36 </section>
37
38
39 <section id="directives" name="Директивы">
40
41 <directive name="uwsgi_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 исходящих соединениях с uwsgi-сервером.
51 В значении параметра допустимо использование переменных (1.3.12).
52 Специальное значение <literal>off</literal> (1.3.12) отменяет действие
53 унаследованной с предыдущего уровня конфигурации
54 директивы <literal>uwsgi_bind</literal>, позволяя системе
55 самостоятельно выбирать локальный IP-адрес.
56 </para>
57
58 </directive>
59
60
61 <directive name="uwsgi_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 первая часть ответа, получаемого от uwsgi-сервера.
71 В этой части ответа находится, как правило, небольшой заголовок ответа.
72 По умолчанию размер буфера равен размеру одного буфера в директиве
73 <link id="uwsgi_buffers"/>, однако его можно сделать меньше.
74 </para>
75
76 </directive>
77
78
79 <directive name="uwsgi_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 Разрешает или запрещает использовать буферизацию ответов uwsgi-сервера.
88 </para>
89
90 <para>
91 Если буферизация включена, то nginx принимает ответ uwsgi-сервера
92 как можно быстрее, сохраняя его в буферы, заданные директивами
93 <link id="uwsgi_buffer_size"/> и <link id="uwsgi_buffers"/>.
94 Если ответ не вмещается целиком в память, то его часть может быть записана
95 на диск во <link id="uwsgi_temp_path">временный файл</link>.
96 Запись во временные файлы контролируется директивами
97 <link id="uwsgi_max_temp_file_size"/> и
98 <link id="uwsgi_temp_file_write_size"/>.
99 </para>
100
101 <para>
102 Если буферизация выключена, то ответ синхронно передаётся клиенту сразу же
103 по мере его поступления.
104 nginx не пытается считать весь ответ uwsgi-сервера.
105 Максимальный размер данных, который nginx может принять от сервера
106 за один раз, задаётся директивой <link id="uwsgi_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="uwsgi_ignore_headers"/>.
115 </para>
116
117 </directive>
118
119
120 <directive name="uwsgi_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 в которые будет читаться ответ, получаемый от uwsgi-сервера.
131 По умолчанию размер одного буфера равен размеру страницы.
132 В зависимости от платформы это или 4K, или 8K.
133 </para>
134
135 </directive>
136
137
138 <directive name="uwsgi_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="uwsgi_buffering">буферизации</link> ответов
147 uwsgi-сервера, ограничивает суммарный <value>размер</value>
148 буферов, которые могут быть заняты для отправки ответа клиенту, пока
149 ответ ещё не прочитан целиком.
150 Оставшиеся буферы тем временем могут использоваться для чтения ответа
151 и, при необходимости, буферизации части ответа во временный файл.
152 По умолчанию <value>размер</value> ограничен двумя буферами, заданными
153 директивами <link id="uwsgi_buffer_size"/> и <link id="uwsgi_buffers"/>.
154 </para>
155
156 </directive>
157
158
159 <directive name="uwsgi_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="uwsgi_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 uwsgi_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
189 uwsgi_cache_bypass $http_pragma $http_authorization;
190 </example>
191 Можно использовать совместно с директивой <link id="uwsgi_no_cache"/>.
192 </para>
193
194 </directive>
195
196
197 <directive name="uwsgi_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 uwsgi_cache_key localhost:9000$request_uri;
208 </example>
209 </para>
210
211 </directive>
212
213
214 <directive name="uwsgi_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="uwsgi_cache_key"/>, передав запрос на uwsgi-сервер.
226 Остальные запросы этого же элемента будут либо ожидать
227 появления ответа в кэше, либо освобождения блокировки
228 этого элемента, в течение времени, заданного директивой
229 <link id="uwsgi_cache_lock_timeout"/>.
230 </para>
231
232 </directive>
233
234
235 <directive name="uwsgi_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="uwsgi_cache_lock"/>.
245 </para>
246
247 </directive>
248
249
250 <directive name="uwsgi_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="uwsgi_no_cache"/>.
267 </para>
268
269 </directive>
270
271
272 <directive name="uwsgi_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="uwsgi_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 от <link id="uwsgi_cache_key">ключа кэширования</link>.
304 Параметр <literal>levels</literal> задаёт уровни иерархии кэша,
305 например, при использовании
306 <example>
307 uwsgi_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="uwsgi_temp_path"/> для данного location.
326 </para>
327
328 <para>
329 Кроме того, все активные ключи и информация о данных хранятся в зоне
330 разделяемой памяти, <value>имя</value> и <value>размер</value> которой
331 задаются параметром <literal>keys_zone</literal>.
332 Зоны размером в 1 мегабайт достаточно для хранения около 8 тысяч ключей.
333 </para>
334
335 <para>
336 Если к данным кэша не обращаются в течение времени, заданного параметром
337 <literal>inactive</literal>, то данные удаляются, независимо от их свежести.
338 По умолчанию <literal>inactive</literal> равен 10 минутам.
339 </para>
340
341 <para>
342 Специальный процесс “cache manager” следит за максимальным размером кэша,
343 заданным параметром <literal>max_size</literal>, и при превышении
344 его размеров удаляет наименее востребованные данные.
345 </para>
346
347 <para>
348 Через минуту после старта активируется специальный процесс “cache loader”,
349 который загружает в зону кэша информацию о ранее закэшированных данных,
350 хранящихся на файловой системе.
351 Загрузка происходит итерациями.
352 За одну итерацию загружается не более <literal>loader_files</literal>
353 элементов (по умолчанию 100).
354 Кроме того, время работы одной итерации ограничено параметром
355 <literal>loader_threshold</literal> (по умолчанию 200 миллисекунд).
356 Между итерациями делается пауза на время, заданное параметром
357 <literal>loader_sleep</literal> (по умолчанию 50 миллисекунд).
358 </para>
359
360 </directive>
361
362
363 <directive name="uwsgi_cache_purge">
364 <syntax>строка ...</syntax>
365 <default/>
366 <context>http</context>
367 <context>server</context>
368 <context>location</context>
369 <appeared-in>1.5.7</appeared-in>
370
371 <para>
372 Задаёт условия, при которых запрос будет считаться запросом
373 на очистку кэша.
374 Если значение хотя бы одного из строковых параметров непустое и не равно “0”,
375 то запись в кэше с соответствующим
376 <link id="uwsgi_cache_key">ключом кэширования</link> удаляется.
377 В результате успешной операции возвращается ответ с кодом
378 <http-status code="204" text="No Content"/>.
379 </para>
380
381 <para>
382 Если <link id="uwsgi_cache_key">ключ кэширования</link>
383 запроса на очистку заканчивается
384 звёздочкой (“<literal>*</literal>”), то все записи в кэше, соответствующие
385 этой маске, будут удалены из кэша.
386 </para>
387
388 <para>
389 Пример конфигурации:
390 <example>
391 uwsgi_cache_path /data/nginx/cache keys_zone=cache_zone:10m;
392
393 map $request_method $purge_method {
394 PURGE 1;
395 default 0;
396 }
397
398 server {
399 ...
400 location / {
401 uwsgi_pass http://backend;
402 uwsgi_cache cache_zone;
403 uwsgi_cache_key $uri;
404 uwsgi_cache_purge $purge_method;
405 }
406 }
407 </example>
408 <note>
409 Функциональность доступна как часть
410 <commercial_version>коммерческой подписки</commercial_version>.
411 </note>
412 </para>
413
414 </directive>
415
416
417 <directive name="uwsgi_cache_revalidate">
418 <syntax><literal>on</literal> | <literal>off</literal></syntax>
419 <default>off</default>
420 <context>http</context>
421 <context>server</context>
422 <context>location</context>
423 <appeared-in>1.5.7</appeared-in>
424
425 <para>
426 Разрешает ревалидацию просроченных элементов кэша при помощи
427 условных запросов с полем заголовка <header>If-Modified-Since</header>.
428 </para>
429
430 </directive>
431
432
433 <directive name="uwsgi_cache_use_stale">
434 <syntax>
435 <literal>error</literal> |
436 <literal>timeout</literal> |
437 <literal>invalid_header</literal> |
438 <literal>updating</literal> |
439 <literal>http_500</literal> |
440 <literal>http_503</literal> |
441 <literal>http_403</literal> |
442 <literal>http_404</literal> |
443 <literal>off</literal>
444 ...</syntax>
445 <default>off</default>
446 <context>http</context>
447 <context>server</context>
448 <context>location</context>
449
450 <para>
451 Определяет, в каких случаях можно использовать устаревший закэшированный ответ,
452 если при работе с uwsgi-сервером возникла ошибка.
453 Параметры директивы совпадают с параметрами
454 директивы <link id="uwsgi_next_upstream"/>.
455 </para>
456
457 <para>
458 Кроме того, дополнительный параметр <literal>updating</literal>
459 разрешает использовать устаревший закэшированный ответ,
460 если на данный момент он уже обновляется.
461 Это позволяет минимизировать число обращений к uwsgi-серверам
462 при обновлении закэшированных данных.
463 </para>
464
465 <para>
466 Чтобы минимизировать число обращений к uwsgi-серверам при
467 заполнении нового элемента кэша, можно воспользоваться директивой
468 <link id="uwsgi_cache_lock"/>.
469 </para>
470
471 </directive>
472
473
474 <directive name="uwsgi_cache_valid">
475 <syntax>[<value>код</value> ...] <value>время</value></syntax>
476 <default/>
477 <context>http</context>
478 <context>server</context>
479 <context>location</context>
480
481 <para>
482 Задаёт время кэширования для разных кодов ответа.
483 Например, директивы
484 <example>
485 uwsgi_cache_valid 200 302 10m;
486 uwsgi_cache_valid 404 1m;
487 </example>
488 задают время кэширования 10 минут для ответов с кодами 200 и 302
489 и 1 минуту для ответов с кодом 404.
490 </para>
491
492 <para>
493 Если указано только <value>время</value> кэширования,
494 <example>
495 uwsgi_cache_valid 5m;
496 </example>
497 то кэшируются только ответы 200, 301 и 302.
498 </para>
499
500 <para>
501 Кроме того, можно кэшировать любые ответы с помощью параметра
502 <literal>any</literal>:
503 <example>
504 uwsgi_cache_valid 200 302 10m;
505 uwsgi_cache_valid 301 1h;
506 uwsgi_cache_valid any 1m;
507 </example>
508 </para>
509
510 <para>
511 Параметры кэширования могут также быть заданы непосредственно
512 в заголовке ответа.
513 Такой способ приоритетнее, чем задание времени кэширования с помощью директивы.
514 Поле заголовка <header>X-Accel-Expires</header> задаёт время кэширования
515 ответа в секундах.
516 Значение 0 запрещает кэшировать ответ.
517 Если значение начинается с префикса <literal>@</literal>, оно задаёт абсолютное
518 время в секундах с начала эпохи, до которого ответ может быть закэширован.
519 Если в заголовке нет поля <header>X-Accel-Expires</header>,
520 параметры кэширования определяются по полям заголовка
521 <header>Expires</header> или <header>Cache-Control</header>.
522 Ответ, в заголовке которого есть поле <header>Set-Cookie</header>,
523 не будет кэшироваться.
524 Обработка одного или более из этих полей заголовка может быть отключена
525 при помощи директивы <link id="uwsgi_ignore_headers"/>.
526 </para>
527
528 </directive>
529
530
531 <directive name="uwsgi_connect_timeout">
532 <syntax><value>время</value></syntax>
533 <default>60s</default>
534 <context>http</context>
535 <context>server</context>
536 <context>location</context>
537
538 <para>
539 Задаёт таймаут для установления соединения с uwsgi-сервером.
540 Необходимо иметь в виду, что этот таймаут обычно не может превышать 75 секунд.
541 </para>
542
543 </directive>
544
545
546 <directive name="uwsgi_hide_header">
547 <syntax><value>поле</value></syntax>
548 <default/>
549 <context>http</context>
550 <context>server</context>
551 <context>location</context>
552
553 <para>
554 По умолчанию
555 nginx не передаёт клиенту поля заголовка <header>Status</header> и
556 <header>X-Accel-...</header> из ответа uwsgi-сервера.
557 Директива <literal>uwsgi_hide_header</literal> задаёт дополнительные поля,
558 которые не будут передаваться.
559 Если же передачу полей нужно разрешить, можно воспользоваться
560 директивой <link id="uwsgi_pass_header"/>.
561 </para>
562
563 </directive>
564
565
566 <directive name="uwsgi_ignore_client_abort">
567 <syntax><literal>on</literal> | <literal>off</literal></syntax>
568 <default>off</default>
569 <context>http</context>
570 <context>server</context>
571 <context>location</context>
572
573 <para>
574 Определяет, закрывать ли соединение с uwsgi-сервером
575 в случае, если клиент закрыл соединение, не дождавшись ответа.
576 </para>
577
578 </directive>
579
580
581 <directive name="uwsgi_ignore_headers">
582 <syntax><value>поле</value> ...</syntax>
583 <default/>
584 <context>http</context>
585 <context>server</context>
586 <context>location</context>
587
588 <para>
589 Запрещает обработку некоторых полей заголовка из ответа uwsgi-сервера.
590 В директиве можно указать поля <header>X-Accel-Redirect</header>,
591 <header>X-Accel-Expires</header>, <header>X-Accel-Limit-Rate</header> (1.1.6),
592 <header>X-Accel-Buffering</header> (1.1.6),
593 <header>X-Accel-Charset</header> (1.1.6), <header>Expires</header>,
594 <header>Cache-Control</header> и <header>Set-Cookie</header> (0.8.44).
595 </para>
596
597 <para>
598 Если не запрещено, обработка этих полей заголовка заключается в следующем:
599 <list type="bullet" compact="no">
600
601 <listitem>
602 <header>X-Accel-Expires</header>, <header>Expires</header>,
603 <header>Cache-Control</header> и <header>Set-Cookie</header>
604 задают параметры <link id="uwsgi_cache_valid">кэширования</link> ответа;
605 </listitem>
606
607 <listitem>
608 <header>X-Accel-Redirect</header> производит
609 <link doc="ngx_http_core_module.xml" id="internal">внутреннее
610 перенаправление</link> на указанный URI;
611 </listitem>
612
613 <listitem>
614 <header>X-Accel-Limit-Rate</header> задаёт
615 <link doc="ngx_http_core_module.xml" id="limit_rate">ограничение
616 скорости</link> передачи ответа клиенту;
617 </listitem>
618
619 <listitem>
620 <header>X-Accel-Buffering</header> включает или выключает
621 <link id="uwsgi_buffering">буферизацию</link> ответа;
622 </listitem>
623
624 <listitem>
625 <header>X-Accel-Charset</header> задаёт желаемую
626 <link doc="ngx_http_charset_module.xml" id="charset">кодировку</link>
627 ответа.
628 </listitem>
629
630 </list>
631 </para>
632
633 </directive>
634
635
636 <directive name="uwsgi_intercept_errors">
637 <syntax><literal>on</literal> | <literal>off</literal></syntax>
638 <default>off</default>
639 <context>http</context>
640 <context>server</context>
641 <context>location</context>
642
643 <para>
644 Определяет, передавать ли клиенту ответы uwsgi-сервера с кодом
645 больше либо равным 300, или же перенаправлять их на обработку nginx’у с помощью
646 директивы <link doc="ngx_http_core_module.xml" id="error_page"/>.
647 </para>
648
649 </directive>
650
651
652 <directive name="uwsgi_max_temp_file_size">
653 <syntax><value>размер</value></syntax>
654 <default>1024m</default>
655 <context>http</context>
656 <context>server</context>
657 <context>location</context>
658
659 <para>
660 Если включена <link id="uwsgi_buffering">буферизация</link> ответов
661 uwsgi-сервера, и ответ не вмещается целиком в буферы,
662 заданные директивами <link id="uwsgi_buffer_size"/> и
663 <link id="uwsgi_buffers"/>, часть ответа может быть записана во временный файл.
664 Эта директива задаёт максимальный <value>размер</value> временного файла.
665 Размер данных, сбрасываемых во временный файл за один раз, задаётся
666 директивой <link id="uwsgi_temp_file_write_size"/>.
667 </para>
668
669 <para>
670 Значение 0 отключает возможность буферизации ответов во временные файлы.
671 </para>
672
673 </directive>
674
675
676 <directive name="uwsgi_next_upstream">
677 <syntax>
678 <literal>error</literal> |
679 <literal>timeout</literal> |
680 <literal>invalid_header</literal> |
681 <literal>http_500</literal> |
682 <literal>http_503</literal> |
683 <literal>http_403</literal> |
684 <literal>http_404</literal> |
685 <literal>off</literal>
686 ...</syntax>
687 <default>error timeout</default>
688 <context>http</context>
689 <context>server</context>
690 <context>location</context>
691
692 <para>
693 Определяет, в каких случаях запрос будет передан следующему серверу:
694 <list type="tag">
695
696 <tag-name><literal>error</literal></tag-name>
697 <tag-desc>произошла ошибка соединения с сервером, передачи ему запроса или
698 чтения заголовка ответа сервера;</tag-desc>
699
700 <tag-name><literal>timeout</literal></tag-name>
701 <tag-desc>произошёл таймаут во время соединения с сервером,
702 передачи ему запроса или чтения заголовка ответа сервера;</tag-desc>
703
704 <tag-name><literal>invalid_header</literal></tag-name>
705 <tag-desc>сервер вернул пустой или неверный ответ;</tag-desc>
706
707 <tag-name><literal>http_500</literal></tag-name>
708 <tag-desc>сервер вернул ответ с кодом 500;</tag-desc>
709
710 <tag-name><literal>http_503</literal></tag-name>
711 <tag-desc>сервер вернул ответ с кодом 503;</tag-desc>
712
713 <tag-name><literal>http_403</literal></tag-name>
714 <tag-desc>сервер вернул ответ с кодом 403;</tag-desc>
715
716 <tag-name><literal>http_404</literal></tag-name>
717 <tag-desc>сервер вернул ответ с кодом 404;</tag-desc>
718
719 <tag-name><literal>off</literal></tag-name>
720 <tag-desc>запрещает передачу запроса следующему серверу.</tag-desc>
721
722 </list>
723 </para>
724
725 <para>
726 Необходимо понимать, что передача запроса следующему серверу возможна
727 только при условии, что клиенту ещё ничего не передавалось.
728 То есть, если ошибка или таймаут возникли в середине передачи ответа,
729 то исправить это уже невозможно.
730 </para>
731
732 <para>
733 Директива также определяет, что считается неудачной попыткой работы с
734 <link doc="ngx_http_upstream_module.xml" id="server">сервером</link>.
735 Случаи <literal>error</literal>, <literal>timeout</literal> и
736 <literal>invalid_header</literal>
737 всегда считаются неудачными попытками, даже если они не указаны в директиве.
738 Случаи <literal>http_500</literal> и <literal>http_503</literal>
739 считаются неудачными попытками, только если они указаны в директиве.
740 Случаи <literal>http_403</literal> и <literal>http_404</literal>
741 никогда не считаются неудачными попытками.
742 </para>
743
744 </directive>
745
746
747 <directive name="uwsgi_no_cache">
748 <syntax><value>строка</value> ...</syntax>
749 <default/>
750 <context>http</context>
751 <context>server</context>
752 <context>location</context>
753
754 <para>
755 Задаёт условия, при которых ответ не будет сохраняться в кэш.
756 Если значение хотя бы одного из строковых параметров непустое и не равно “0”,
757 то ответ не будет сохранён:
758 <example>
759 uwsgi_no_cache $cookie_nocache $arg_nocache$arg_comment;
760 uwsgi_no_cache $http_pragma $http_authorization;
761 </example>
762 Можно использовать совместно с директивой <link id="uwsgi_cache_bypass"/>.
763 </para>
764
765 </directive>
766
767
768 <directive name="uwsgi_param">
769 <syntax>
770 <value>параметр</value> <value>значение</value>
771 [<literal>if_not_empty</literal>]</syntax>
772 <default/>
773 <context>http</context>
774 <context>server</context>
775 <context>location</context>
776
777 <para>
778 Задаёт <value>параметр</value>, который будет передаваться uwsgi-серверу.
779 В качестве значения можно использовать текст, переменные и их комбинации.
780 Директивы наследуются с предыдущего уровня при условии, что на данном
781 уровне не описаны свои директивы <literal>uwsgi_param</literal>.
782 </para>
783
784 <para>
785 Стандартные
786 <link url="http://tools.ietf.org/html/rfc3875#section-4.1">переменные
787 окружения CGI</link>
788 должны передаваться как заголовки uwsgi, см. файл <path>uwsgi_params</path>
789 из дистрибутива:
790 <example>
791 location / {
792 include uwsgi_params;
793 ...
794 }
795 </example>
796 </para>
797
798 <para>
799 Если директива указана с <literal>if_not_empty</literal> (1.1.11),
800 то такой параметр с пустым значением передаваться на сервер не будет:
801 <example>
802 uwsgi_param HTTPS $https if_not_empty;
803 </example>
804 </para>
805
806 </directive>
807
808
809 <directive name="uwsgi_pass">
810 <syntax><value>адрес</value></syntax>
811 <default/>
812 <context>location</context>
813 <context>if в location</context>
814
815 <para>
816 Задаёт адрес uwsgi-сервера.
817 Адрес может быть указан в виде доменного имени или адреса, и порта, например,
818 <example>
819 uwsgi_pass localhost:9000;
820 </example>
821 или в виде пути UNIX-сокета:
822 <example>
823 uwsgi_pass unix:/tmp/uwsgi.socket;
824 </example>
825 </para>
826
827 <para>
828 Если доменному имени соответствует несколько адресов, то все они будут
829 использоваться по очереди (round-robin).
830 И, кроме того, адрес может быть
831 <link doc="ngx_http_upstream_module.xml">группой серверов</link>.
832 </para>
833
834 </directive>
835
836
837 <directive name="uwsgi_pass_header">
838 <syntax><value>поле</value></syntax>
839 <default/>
840 <context>http</context>
841 <context>server</context>
842 <context>location</context>
843
844 <para>
845 Разрешает передавать от uwsgi-сервера клиенту
846 <link id="uwsgi_hide_header">запрещённые для передачи</link> поля заголовка.
847 </para>
848
849 </directive>
850
851
852 <directive name="uwsgi_pass_request_body">
853 <syntax><literal>on</literal> | <literal>off</literal></syntax>
854 <default>on</default>
855 <context>http</context>
856 <context>server</context>
857 <context>location</context>
858
859 <para>
860 Позволяет запретить передачу исходного тела запроса
861 на uwsgi-сервер.
862 См. также директиву <link id="uwsgi_pass_request_headers"/>.
863 </para>
864
865 </directive>
866
867
868 <directive name="uwsgi_pass_request_headers">
869 <syntax><literal>on</literal> | <literal>off</literal></syntax>
870 <default>on</default>
871 <context>http</context>
872 <context>server</context>
873 <context>location</context>
874
875 <para>
876 Позволяет запретить передачу полей заголовка исходного запроса на
877 uwsgi-сервер.
878 См. также директивы <link id="uwsgi_pass_request_body"/>.
879 </para>
880
881 </directive>
882
883
884 <directive name="uwsgi_read_timeout">
885 <syntax><value>время</value></syntax>
886 <default>60s</default>
887 <context>http</context>
888 <context>server</context>
889 <context>location</context>
890
891 <para>
892 Задаёт таймаут при чтении ответа uwsgi-сервера.
893 Таймаут устанавливается не на всю передачу ответа,
894 а только между двумя операциями чтения.
895 Если по истечении этого времени uwsgi-сервер ничего не передаст,
896 соединение закрывается.
897 </para>
898
899 </directive>
900
901
902 <directive name="uwsgi_send_timeout">
903 <syntax><value>время</value></syntax>
904 <default>60s</default>
905 <context>http</context>
906 <context>server</context>
907 <context>location</context>
908
909 <para>
910 Задаёт таймаут при передаче запроса uwsgi-серверу.
911 Таймаут устанавливается не на всю передачу запроса,
912 а только между двумя операциями записи.
913 Если по истечении этого времени uwsgi-сервер не примет новых данных,
914 соединение закрывается.
915 </para>
916
917 </directive>
918
919
920 <directive name="uwsgi_store">
921 <syntax>
922 <literal>on</literal> |
923 <literal>off</literal> |
924 <value>строка</value></syntax>
925 <default>off</default>
926 <context>http</context>
927 <context>server</context>
928 <context>location</context>
929
930 <para>
931 Разрешает сохранение на диск файлов.
932 Параметр <literal>on</literal> сохраняет файлы в соответствии с путями,
933 указанными в директивах
934 <link doc="ngx_http_core_module.xml" id="alias"/> или
935 <link doc="ngx_http_core_module.xml" id="root"/>.
936 Параметр <literal>off</literal> запрещает сохранение файлов.
937 Кроме того, имя файла можно задать явно с помощью строки с переменными:
938 <example>
939 uwsgi_store /data/www$original_uri;
940 </example>
941 </para>
942
943 <para>
944 Время изменения файлов выставляется согласно полученному полю
945 <header>Last-Modified</header> в заголовке ответа.
946 Ответ сначала записывается во временный файл, а потом этот файл
947 переименовывается.
948 Начиная с версии 0.8.9, временный файл и постоянное место хранения ответа
949 могут располагаться на разных файловых системах.
950 Однако нужно учитывать,
951 что в этом случае вместо дешёвой операции переименовывания в пределах
952 одной файловой системы файл копируется с одной файловой системы на другую.
953 Поэтому лучше, если сохраняемые файлы будут находиться на той же файловой
954 системе, что и каталог с временными файлами, задаваемый директивой
955 <link id="uwsgi_temp_path"/> для данного location.
956 </para>
957
958 <para>
959 Директиву можно использовать для создания локальных копий статических
960 неизменяемых файлов, например, так:
961 <example>
962 location /images/ {
963 root /data/www;
964 error_page 404 = /fetch$uri;
965 }
966
967 location /fetch/ {
968 internal;
969
970 uwsgi_pass backend:9000;
971 ...
972
973 uwsgi_store on;
974 uwsgi_store_access user:rw group:rw all:r;
975 uwsgi_temp_path /data/temp;
976
977 alias /data/www/;
978 }
979 </example>
980 </para>
981
982 </directive>
983
984
985 <directive name="uwsgi_store_access">
986 <syntax><value>пользователи</value>:<value>права</value> ...</syntax>
987 <default>user:rw</default>
988 <context>http</context>
989 <context>server</context>
990 <context>location</context>
991
992 <para>
993 Задаёт права доступа для создаваемых файлов и каталогов, например,
994 <example>
995 uwsgi_store_access user:rw group:rw all:r;
996 </example>
997 </para>
998
999 <para>
1000 Если заданы какие-либо права для <literal>group</literal> или
1001 <literal>all</literal>, то права для <literal>user</literal>
1002 указывать необязательно:
1003 <example>
1004 uwsgi_store_access group:rw all:r;
1005 </example>
1006 </para>
1007
1008 </directive>
1009
1010
1011 <directive name="uwsgi_temp_file_write_size">
1012 <syntax><value>размер</value></syntax>
1013 <default>8k|16k</default>
1014 <context>http</context>
1015 <context>server</context>
1016 <context>location</context>
1017
1018 <para>
1019 Ограничивает <value>размер</value> данных, сбрасываемых во временный файл
1020 за один раз, при включённой буферизации ответов uwsgi-сервера
1021 во временные файлы.
1022 По умолчанию <value>размер</value> ограничен двумя буферами, заданными
1023 директивами <link id="uwsgi_buffer_size"/> и <link id="uwsgi_buffers"/>.
1024 Максимальный размер временного файла задаётся директивой
1025 <link id="uwsgi_max_temp_file_size"/>.
1026 </para>
1027
1028 </directive>
1029
1030
1031 <directive name="uwsgi_temp_path">
1032 <syntax>
1033 <value>путь</value>
1034 [<value>уровень1</value>
1035 [<value>уровень2</value>
1036 [<value>уровень3</value>]]]</syntax>
1037 <default>uwsgi_temp</default>
1038 <context>http</context>
1039 <context>server</context>
1040 <context>location</context>
1041
1042 <para>
1043 Задаёт имя каталога для хранения временных файлов с данными,
1044 полученными от uwsgi-серверов.
1045 В каталоге может использоваться иерархия подкаталогов до трёх уровней.
1046 Например, при такой конфигурации
1047 <example>
1048 uwsgi_temp_path /spool/nginx/uwsgi_temp 1 2;
1049 </example>
1050 временный файл будет следующего вида:
1051 <example>
1052 /spool/nginx/uwsgi_temp/<emphasis>7</emphasis>/<emphasis>45</emphasis>/00000123<emphasis>457</emphasis>
1053 </example>
1054 </para>
1055
1056 </directive>
1057
1058 </section>
1059
1060 </module>