annotate xml/ru/docs/http/ngx_http_rewrite_module.xml @ 382:b838f6e9192e

Revision.
author Ruslan Ermilov <ru@nginx.com>
date Tue, 31 Jan 2012 16:29:31 +0000
parents 4c6d2c614d2c
children 1702722eca07
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
222
bfe3eff81d04 Removed redundant encoding specification.
Ruslan Ermilov <ru@nginx.com>
parents: 110
diff changeset
1 <?xml version="1.0"?>
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
5 <module name="Модуль ngx_http_rewrite_module"
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6 link="/ru/docs/http/ngx_http_rewrite_module.html"
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 lang="ru">
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
110
40eec261c2a6 Added proper support for anonymous sections, notably for the summary.
Ruslan Ermilov <ru@nginx.com>
parents: 108
diff changeset
9 <section id="summary">
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11 <para>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
12 Модуль <literal>ngx_http_rewrite_module</literal> позволяет
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
13 изменять URI с помощью регулярных выражений, делать перенаправления
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
14 и выбирать конфигурацию в зависимости от переменных.
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
15 Если директивы этого модуля описаны на уровне сервера, то они
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
16 выполняются до того, как определяется location для запроса.
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
17 Если в выбранном location тоже есть директивы модуля
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
18 <literal>ngx_http_rewrite_module</literal>, то они также выполняются.
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 Если URI изменился в результате исполнения директив внутри location,
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
20 то снова определяется location для уже нового URI.
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
21 Этот цикл может повторяться до 10 раз, после чего nginx возвращает
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
22 ошибку <http-status code="500" text="Internal Server Error"/>.
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25 </section>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
28 <section id="directives" name="Директивы">
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30 <directive name="break">
102
c76a257f3fd4 The directive name is now automatically printed in <default> and <syntax>.
Ruslan Ermilov <ru@nginx.com>
parents: 99
diff changeset
31 <syntax/>
99
1d315ef37215 The case <default/> is now language-agnostic.
Ruslan Ermilov <ru@nginx.com>
parents: 98
diff changeset
32 <default/>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
33 <context>server</context>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
34 <context>location</context>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
35 <context>if</context>
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37 <para>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
38 Завершает обработку текущего набора директив модуля
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
39 <literal>ngx_http_rewrite_module</literal>.
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 <para>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
43 Пример:
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 <example>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
45 if ($slow) {
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
46 limit_rate 10k;
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
47 break;
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
48 }
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 </example>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52 </directive>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55 <directive name="if">
108
72524ae53106 Explicitly marked directives with the block syntax. Such directives will
Ruslan Ermilov <ru@nginx.com>
parents: 106
diff changeset
56 <syntax block="yes">(<value>условие</value>)</syntax>
99
1d315ef37215 The case <default/> is now language-agnostic.
Ruslan Ermilov <ru@nginx.com>
parents: 98
diff changeset
57 <default/>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
58 <context>server</context>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
59 <context>location</context>
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61 <para>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
62 Проверяет истинность условия.
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
63 Если оно истинно,
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64 то выполняется указанный в фигурных скобках код и запрос обрабатывается
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65 в соответствии с заданной там же конфигурацией.
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
66 Конфигурация внутри директивы <literal>if</literal> наследуется с
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
67 предыдущего уровня.
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70 <para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71 В качестве условия могут быть заданы:
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72 <list type="bullet">
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74 <listitem>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
75 имя переменной; ложными значениями переменной являются пустая строка “”
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
76 или любая строка, начинающаяся на “<literal>0</literal>”;
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77 </listitem>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79 <listitem>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
80 сравнение переменной со строкой с помощью операторов
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
81 “<literal>=</literal>” и “<literal>!=</literal>”;
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
82 </listitem>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84 <listitem>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
85 проверка переменной с помощью регулярного выражения с учётом
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
86 регистра символов — “<literal>~</literal>” и без него — “<literal>~*</literal>”.
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87 В регулярных выражениях можно использовать выделения, которые затем
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
88 доступны в виде переменных <var>$1</var> — <var>$9</var>.
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
89 Также можно использовать отрицательные операторы “<literal>!~</literal>”
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
90 и “<literal>!~*</literal>”.
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
91 Если в регулярном выражении встречаются символы “<literal>}</literal>”
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
92 или “<literal>;</literal>”, то всё выражение нужно заключить в одинарные
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
93 или двойные кавычки.
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94 </listitem>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96 <listitem>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
97 проверка существования файла с помощью операторов “<literal>-f</literal>”
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
98 и “<literal>!-f</literal>”;
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99 </listitem>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
100
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
101 <listitem>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
102 проверка существования каталога с помощью операторов “<literal>-d</literal>”
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
103 и “<literal>!-d</literal>”;
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
104 </listitem>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
105
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
106 <listitem>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
107 проверка существования файла, каталога или символической ссылки
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
108 с помощью операторов “<literal>-e</literal>” и “<literal>!-e</literal>”;
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
109 </listitem>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
110
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
111 <listitem>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
112 проверка исполняемости файла с помощью операторов “<literal>-x</literal>”
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
113 и “<literal>!-x</literal>”.
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
114 </listitem>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
115
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
116 </list>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
117 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
118
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
119 <para>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
120 Примеры:
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
121 <example>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
122 if ($http_user_agent ~ MSIE) {
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
123 rewrite ^(.*)$ /msie/$1 break;
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
124 }
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
125
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
126 if ($http_cookie ~* "id=([^;]+)(?:;|$)") {
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
127 set $id $1;
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
128 }
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
129
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
130 if ($request_method = POST) {
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
131 return 405;
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
132 }
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
133
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
134
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
135 if ($slow) {
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
136 limit_rate 10k;
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
137 }
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
138
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
139 if ($invalid_referer) {
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
140 return 403;
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
141 }
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
142 </example>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
143 Значение встроенной переменной <var>$invalid_referer</var> задаётся директивой
106
56457a474903 If text of the link is not provided, the @id is used.
Ruslan Ermilov <ru@nginx.com>
parents: 102
diff changeset
144 <link doc="ngx_http_referer_module.xml" id="valid_referers"/>.
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
145 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
146
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
147 </directive>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
148
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
149
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
150 <directive name="return">
102
c76a257f3fd4 The directive name is now automatically printed in <default> and <syntax>.
Ruslan Ermilov <ru@nginx.com>
parents: 99
diff changeset
151 <syntax><value>код</value></syntax>
99
1d315ef37215 The case <default/> is now language-agnostic.
Ruslan Ermilov <ru@nginx.com>
parents: 98
diff changeset
152 <default/>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
153 <context>server</context>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
154 <context>location</context>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
155 <context>if</context>
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
156
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
157 <para>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
158 Завершает исполнение кода и возвращает клиенту указанный код.
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
159 Можно использовать следующие значения: 204, 400,
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
160 402 — 406, 408, 410, 411, 413, 416 и 500 — 504.
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
161 Кроме того, нестандартный код 444 закрывает соединение без передачи
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
162 заголовка ответа.
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
163 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
164
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
165 </directive>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
166
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
167
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
168 <directive name="rewrite">
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
169 <syntax>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
170 <value>regex</value>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
171 <value>замена</value>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
172 [<value>флаг</value>]</syntax>
99
1d315ef37215 The case <default/> is now language-agnostic.
Ruslan Ermilov <ru@nginx.com>
parents: 98
diff changeset
173 <default/>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
174 <context>server</context>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
175 <context>location</context>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
176 <context>if</context>
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
177
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
178 <para>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
179 Изменяет URI в соответствии с регулярным выражением и строкой замены.
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
180 Директивы выполняются в порядке их следования в конфигурационном файле.
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
181 С помощью флагов можно досрочно прекратить исполнение директив.
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
182 Если строка замены начинается с “<literal>http://</literal>”, то клиенту
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
183 будет возвращено перенаправление и обработка директив также завершается.
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
184 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
185
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
186 <para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
187 Флаги могут быть следующими:
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
188 <list type="tag">
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
189
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
190 <tag-name><literal>last</literal></tag-name>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
191 <tag-desc>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
192 завершает обработку текущего набора директив модуля
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
193 <literal>ngx_http_rewrite_module</literal>,
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
194 после чего ищется соответствие URI и location;
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
195 </tag-desc>
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
196
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
197 <tag-name><literal>break</literal></tag-name>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
198 <tag-desc>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
199 завершает обработку текущего набора директив модуля
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
200 <literal>ngx_http_rewrite_module</literal>;
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
201 </tag-desc>
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
202
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
203 <tag-name><literal>redirect</literal></tag-name>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
204 <tag-desc>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
205 возвращает временное перенаправление с кодом 302;
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
206 используется, если заменяющая строка не начинается с
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
207 “<literal>http://</literal>”;
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
208 </tag-desc>
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
209
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
210 <tag-name><literal>permanent</literal></tag-name>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
211 <tag-desc>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
212 возвращает постоянное перенаправление с кодом 301.
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
213 </tag-desc>
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
214
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
215 </list>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
216 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
217
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
218 <para>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
219 Пример:
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
220 <example>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
221 rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
222 rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last;
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
223 return 403;
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
224 </example>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
225 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
226
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
227 <para>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
228 Если же эти директивы поместить в location “<literal>/download/</literal>”,
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
229 то нужно заменить флаг <literal>last</literal> на <literal>break</literal>,
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
230 иначе nginx сделает 10 циклов и вернёт ошибку 500:
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
231 <example>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
232 location /download/ {
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
233 rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break;
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
234 rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra break;
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
235 return 403;
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
236 }
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
237 </example>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
238 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
239
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
240 <para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
241 Если в строке замены указаны аргументы, то предыдущие аргументы запроса
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
242 добавляются после них.
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
243 Можно отказаться от этого добавления, указав в конце строки замены знак вопроса:
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
244 <example>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
245 rewrite ^/users/(.*)$ /show?user=$1? last;
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
246 </example>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
247 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
248
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
249 <para>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
250 Если в регулярном выражении встречаются символы “<literal>}</literal>”
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
251 или “<literal>;</literal>”, то всё выражение нужно заключить в одинарные
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
252 или двойные кавычки.
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
253 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
254
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
255 </directive>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
256
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
257
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
258 <directive name="set">
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
259 <syntax><value>переменная</value> <value>значение</value></syntax>
99
1d315ef37215 The case <default/> is now language-agnostic.
Ruslan Ermilov <ru@nginx.com>
parents: 98
diff changeset
260 <default/>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
261 <context>server</context>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
262 <context>location</context>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
263 <context>if</context>
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
264
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
265 <para>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
266 Устанавливает значение для указанной переменной.
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
267 В качестве значения можно использовать текст, переменные и их комбинации.
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
268 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
269
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
270 </directive>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
271
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
272
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
273 <directive name="uninitialized_variable_warn">
271
4c6d2c614d2c Cleaned up XML tag mess:
Ruslan Ermilov <ru@nginx.com>
parents: 256
diff changeset
274 <syntax><literal>on</literal> | <literal>off</literal></syntax>
102
c76a257f3fd4 The directive name is now automatically printed in <default> and <syntax>.
Ruslan Ermilov <ru@nginx.com>
parents: 99
diff changeset
275 <default>on</default>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
276 <context>http</context>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
277 <context>server</context>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
278 <context>location</context>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
279 <context>if</context>
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
280
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
281 <para>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
282 Определяет, нужно ли писать в лог предупреждение
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
283 о неинициализированной переменной.
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
284 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
285
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
286 </directive>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
287
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
288 </section>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
289
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
290
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
291 <section id="internals" name="Внутреннее устройство">
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
292
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
293 <para>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
294 Директивы модуля <literal>ngx_http_rewrite_module</literal>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
295 компилируются на стадии конфигурации во внутренние коды,
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
296 исполняемые во время запроса интерпретатором.
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
297 Интерпретатор представляет из себя простую стековую виртуальную машину.
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
298 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
299
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
300 <para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
301 Например, директивы
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
302 <example>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
303 location /download/ {
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
304 if ($forbidden) {
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
305 return 403;
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
306 }
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
307
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
308 if ($slow) {
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
309 limit_rate 10k;
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
310 }
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
311
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
312 rewrite ^/(download/.*)/media/(.*)\..*$ /$1/mp3/$2.mp3 break;
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
313 }
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
314 </example>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
315 будет скомпилированы в такие коды:
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
316 <example>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
317 переменная $forbidden
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
318 проверка на ноль
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
319 возврат 403
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
320 завершение всего кода
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
321 переменная $slow
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
322 проверка на ноль
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
323 проверка регулярного выражения
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
324 копирование "/"
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
325 копирование $1
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
326 копирование "/mp3/"
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
327 копирование $2
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
328 копирование ".mp3"
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
329 завершение регулярного выражения
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
330 завершение всего кода
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
331 </example>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
332 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
333
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
334 <para>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
335 Обратите внимание, что кода для директивы
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
336 <link doc="ngx_http_core_module.xml" id="limit_rate"/>
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
337 нет, поскольку она не имеет отношения к модулю
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
338 <literal>ngx_http_rewrite_module</literal>.
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
339 Для блока <link id="if"/> создаётся такая же конфигурация, как и для блока
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
340 <link doc="ngx_http_core_module.xml" id="location"/>.
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
341 Если условие истинно, то запрос получает конфигурацию, соответствующую
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
342 блоку <literal>if</literal>,
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
343 и в этой конфигурации <literal>limit_rate</literal> равен 10k.
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
344 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
345
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
346 <para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
347 Директиву
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
348 <example>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
349 rewrite ^/(download/.*)/media/(.*)\..*$ /$1/mp3/$2.mp3 break;
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
350 </example>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
351 можно сделать на один код меньше, если в регулярном выражении включить
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
352 первый слэш в скобки:
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
353 <example>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
354 rewrite ^(<emphasis>/</emphasis>download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break;
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
355 </example>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
356 тогда её коды будут выглядеть так:
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
357 <example>
382
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
358 проверка регулярного выражения
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
359 копирование $1
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
360 копирование "/mp3/"
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
361 копирование $2
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
362 копирование ".mp3"
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
363 завершение регулярного выражения
b838f6e9192e Revision.
Ruslan Ermilov <ru@nginx.com>
parents: 271
diff changeset
364 завершение всего кода
76
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
365 </example>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
366 </para>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
367
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
368 </section>
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
369
4a4caa566120 Russian documentation import.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
370 </module>