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