Mercurial > hg > nginx-site
comparison xml/ru/docs/http/ngx_http_upstream_module.xml @ 292:7bc830cc79bb
Revision.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Wed, 28 Dec 2011 18:59:45 +0000 |
parents | cbb789d3ce5e |
children | 1fb1c077658b |
comparison
equal
deleted
inserted
replaced
291:fd85955f31aa | 292:7bc830cc79bb |
---|---|
1 <?xml version="1.0"?> | 1 <?xml version="1.0"?> |
2 | 2 |
3 <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd"> | 3 <!DOCTYPE module SYSTEM "../../../../dtd/module.dtd"> |
4 | 4 |
5 <module name="Директивы модуля ngx_http_upstream_module" | 5 <module name="Модуль ngx_http_upstream_module" |
6 link="/ru/docs/http/ngx_http_upstream_module.html" | 6 link="/ru/docs/http/ngx_http_upstream_module.html" |
7 lang="ru"> | 7 lang="ru"> |
8 | 8 |
9 <section id="summary"> | 9 <section id="summary"> |
10 | 10 |
11 <para> | 11 <para> |
12 Модуль позволяет описывать группы серверов, | 12 Модуль <literal>ngx_http_upstream_module</literal> |
13 позволяет описывать группы серверов, | |
13 которые могут использоваться в директивах | 14 которые могут использоваться в директивах |
14 <link doc="ngx_http_proxy_module.xml" id="proxy_pass"/> | 15 <link doc="ngx_http_proxy_module.xml" id="proxy_pass"/> |
15 и <link doc="ngx_http_fastcgi_module.xml" id="fastcgi_pass"/>. | 16 и <link doc="ngx_http_fastcgi_module.xml" id="fastcgi_pass"/>. |
16 </para> | 17 </para> |
17 | 18 |
18 </section> | 19 </section> |
19 | 20 |
20 | 21 |
21 <section name="Пример конфигурации" id="example"> | 22 <section id="example" name="Пример конфигурации"> |
22 | 23 |
23 <para> | 24 <para> |
24 <example> | 25 <example> |
25 upstream <emphasis>backend</emphasis> { | 26 upstream <emphasis>backend</emphasis> { |
26 server backend1.example.com weight=5; | 27 server backend1.example.com weight=5; |
27 server backend2.example.com:8080; | 28 server backend2.example.com:8080; |
28 server unix:/tmp/backend3; | 29 server unix:/tmp/backend3; |
29 | 30 |
30 server backup1.example.com:8080 backup; | 31 server backup1.example.com:8080 backup; |
31 server backup2.example.com:8080 backup; | 32 server backup2.example.com:8080 backup; |
32 } | 33 } |
33 | 34 |
34 server { | 35 server { |
35 location / { | 36 location / { |
36 proxy_pass http://<emphasis>backend</emphasis>; | 37 proxy_pass http://<emphasis>backend</emphasis>; |
37 } | 38 } |
38 } | 39 } |
39 </example> | 40 </example> |
40 </para> | 41 </para> |
41 | 42 |
42 </section> | 43 </section> |
43 | 44 |
44 | 45 |
45 <section name="Директивы" id="directives"> | 46 <section id="directives" name="Директивы"> |
46 | 47 |
47 <directive name="ip_hash"> | 48 <directive name="ip_hash"> |
48 <syntax/> | 49 <syntax/> |
49 <default/> | 50 <default/> |
50 <context>upstream</context> | 51 <context>upstream</context> |
51 | 52 |
52 <para> | 53 <para> |
53 Директива задаёт метод распределения запросов по серверам на основе | 54 Задаёт для группы метод распределения запросов по серверам |
54 IP-адресов клиентов. В качестве ключа для хеширования используется сеть | 55 на основе IP-адресов клиентов. |
55 класса C, в которой находится адрес клиента. | 56 В качестве ключа для хэширования используется сеть класса C, |
56 Метод гарантирует, что запросы клиента будут передаваться на один и тот же | 57 в которой находится адрес клиента. |
57 сервер. Если же этот сервер будет считаться неработающим, то запросы этого | 58 Метод гарантирует, что запросы одного и того же клиента |
58 клиента будут передаваться на другой сервер. С большой долей вероятности | 59 будут всегда передаваться на один и тот же сервер. |
59 это также будет один и тот же сервер. | 60 Если же этот сервер будет считаться неработающим, |
60 </para> | 61 то запросы этого клиента будут передаваться на другой сервер. |
61 | 62 С большой долей вероятности это также будет один и тот же сервер. |
62 <para> | 63 </para> |
63 Для серверов, использующих метод распределения ip_hash, нельзя задать вес. | 64 |
65 <para> | |
66 Для серверов, использующих метод распределения <literal>ip_hash</literal>, | |
67 нельзя задать вес. | |
64 Если один из серверов нужно убрать на некоторое время, то для сохранения | 68 Если один из серверов нужно убрать на некоторое время, то для сохранения |
65 текущего хеширования IP-адресов клиентов этот сервер нужно пометить | 69 текущего хэширования IP-адресов клиентов этот сервер нужно пометить |
66 параметром down. | 70 параметром <literal>down</literal>. |
67 </para> | 71 </para> |
68 | 72 |
69 <para> | 73 <para> |
70 Пример конфигурации: | 74 Пример: |
71 <example> | 75 <example> |
72 upstream backend { | 76 upstream backend { |
73 ip_hash; | 77 ip_hash; |
74 | 78 |
75 server backend1.example.com; | 79 server backend1.example.com; |
76 server backend2.example.com; | 80 server backend2.example.com; |
77 server backend3.example.com down; | 81 server backend3.example.com <emphasis>down</emphasis>; |
78 server backend4.example.com; | 82 server backend4.example.com; |
79 } | 83 } |
80 </example> | 84 </example> |
81 </para> | 85 </para> |
82 | 86 |
83 </directive> | 87 </directive> |
87 <syntax><value>название</value> [<value>параметры</value>]</syntax> | 91 <syntax><value>название</value> [<value>параметры</value>]</syntax> |
88 <default/> | 92 <default/> |
89 <context>upstream</context> | 93 <context>upstream</context> |
90 | 94 |
91 <para> | 95 <para> |
92 Директива задаёт имя и параметры сервера. | 96 Задаёт <value>имя</value> и другие <value>параметры</value> сервера. |
93 В качестве имени можно использовать доменное имя, адрес, порт или путь | 97 В качестве имени можно использовать доменное имя, адрес, порт или путь |
94 unix-сокета. Если доменное имя резолвится в несколько адресов, то | 98 UNIX-сокета. |
95 используются все. | 99 Если доменному имени соответствует несколько адресов, то все они используются. |
96 <list type="bullet"> | 100 <list type="tag"> |
97 | 101 |
98 <listitem> | 102 <tag-name><literal>weight</literal>=<value>число</value></tag-name> |
99 weight=число — задаёт вес сервера, по умолчанию вес равен одному. | 103 <tag-desc> |
100 </listitem> | 104 задаёт вес сервера, по умолчанию 1. |
101 | 105 </tag-desc> |
102 <listitem> | 106 |
103 max_fails=число — задаёт число неудачных попыток работы с сервером | 107 <tag-name><literal>max_fails</literal>=<value>число</value></tag-name> |
104 в течение времени, заданного параметром fail_timeout, | 108 <tag-desc> |
105 после которых он считается неработающим также в течение времени | 109 задаёт число неудачных попыток работы с сервером |
106 заданного параметром fail_timeout. | 110 в течение времени, заданного параметром <literal>fail_timeout</literal>, |
107 По умолчанию число попыток равно одной. | 111 после которого он считается неработающим, также в течение времени |
112 заданного параметром <literal>fail_timeout</literal>. | |
113 По умолчанию число попыток устанавливается равным 1. | |
108 Нулевое значение запрещает учёт попыток. | 114 Нулевое значение запрещает учёт попыток. |
109 Что считается неудачной попыткой, задаётся директивами | 115 Что считается неудачной попыткой, задаётся директивами |
110 <link doc="ngx_http_proxy_module.xml" id="proxy_next_upstream"/> | 116 <link doc="ngx_http_proxy_module.xml" id="proxy_next_upstream"/> |
111 и <link doc="ngx_http_fastcgi_module.xml" id="fastcgi_next_upstream"/>. | 117 и <link doc="ngx_http_fastcgi_module.xml" id="fastcgi_next_upstream"/>. |
112 Состояние http_404 не считается неудачной попыткой. | 118 Состояние <literal>http_404</literal> |
113 </listitem> | 119 не считается неудачной попыткой. |
114 | 120 </tag-desc> |
115 <listitem> | 121 |
116 fail_timeout=время — задаёт | 122 <tag-name><literal>fail_timeout</literal>=<value>время</value></tag-name> |
123 <tag-desc> | |
124 задаёт | |
117 <list type="bullet"> | 125 <list type="bullet"> |
118 | 126 |
119 <listitem> | 127 <listitem> |
120 время, в течение которого должно произойти заданное число неудачных | 128 время, в течение которого должно произойти заданное число неудачных |
121 попыток работы с сервером для того, чтобы сервер считался неработающим; | 129 попыток работы с сервером для того, чтобы сервер считался неработающим; |
124 <listitem> | 132 <listitem> |
125 и время, в течение которого сервер будет считаться неработающим. | 133 и время, в течение которого сервер будет считаться неработающим. |
126 </listitem> | 134 </listitem> |
127 | 135 |
128 </list> | 136 </list> |
129 По умолчанию время равно 10 секундам. | 137 По умолчанию таймаут равен 10 секундам. |
130 </listitem> | 138 </tag-desc> |
131 | 139 |
132 <listitem> | 140 <tag-name><literal>backup</literal></tag-name> |
133 backup — помечает сервер как запасной сервер. На него будут | 141 <tag-desc> |
134 передаваться запросы в случае, если не работают основные сервера. | 142 помечает сервер как запасной сервер. |
135 </listitem> | 143 На него будут передаваться запросы в случае, если не работают основные серверы. |
136 | 144 </tag-desc> |
137 <listitem> | 145 |
138 down — помечает сервер как постоянно неработающий, используется | 146 <tag-name><literal>down</literal></tag-name> |
147 <tag-desc> | |
148 помечает сервер как постоянно неработающий; используется | |
139 совместно с директивой <link id="ip_hash"/>. | 149 совместно с директивой <link id="ip_hash"/>. |
140 </listitem> | 150 </tag-desc> |
141 | 151 |
142 </list> | 152 </list> |
143 </para> | 153 </para> |
144 | 154 |
145 <para> | 155 <para> |
146 Пример конфигурации: | 156 Пример: |
147 <example> | 157 <example> |
148 upstream backend { | 158 upstream backend { |
149 server backend1.example.com weight=5; | 159 server backend1.example.com weight=5; |
150 server 127.0.0.1:8080 max_fails=3 fail_timeout=30s; | 160 server 127.0.0.1:8080 max_fails=3 fail_timeout=30s; |
151 server unix:/tmp/backend3; | 161 server unix:/tmp/backend3; |
152 | 162 |
153 server backup1.example.com:8080 backup; | 163 server backup1.example.com:8080 backup; |
154 } | 164 } |
155 </example> | 165 </example> |
156 </para> | 166 </para> |
157 | 167 |
158 </directive> | 168 </directive> |
162 <syntax block="yes"><value>название</value></syntax> | 172 <syntax block="yes"><value>название</value></syntax> |
163 <default/> | 173 <default/> |
164 <context>http</context> | 174 <context>http</context> |
165 | 175 |
166 <para> | 176 <para> |
167 Директива описывает группу серверов. | 177 Описывает группу серверов. |
168 Сервера могут слушать на разных портах, кроме того, можно одновременно | 178 Серверы могут слушать на разных портах. |
169 использовать сервера, слушающие на TCP и unix сокетах. | 179 Кроме того, можно одновременно использовать серверы, |
170 </para> | 180 слушающие на TCP- и UNIX-сокетах. |
171 | 181 </para> |
172 <para> | 182 |
173 Пример конфигурации: | 183 <para> |
174 <example> | 184 Пример: |
175 upstream backend { | 185 <example> |
176 server backend1.example.com weight=5; | 186 upstream backend { |
177 server 127.0.0.1:8080 max_fails=3 fail_timeout=30s; | 187 server backend1.example.com weight=5; |
178 server unix:/tmp/backend3; | 188 server 127.0.0.1:8080 max_fails=3 fail_timeout=30s; |
179 } | 189 server unix:/tmp/backend3; |
180 </example> | 190 } |
181 </para> | 191 </example> |
182 | 192 </para> |
183 <para> | 193 |
184 Запросы распределяются по серверам в режиме round-robin с учётом весов серверов. | 194 <para> |
185 В вышеприведённом примере каждые 7 семь запросов будут распределены так: | 195 Запросы распределяются по серверам циклически (в режиме round-robin) |
186 5 запросов на backend1.example.com и по одному запросу на второй и третий | 196 с учётом весов серверов. |
187 сервера. | 197 В вышеприведённом примере каждые 7 запросов будут распределены так: |
198 5 запросов на <literal>backend1.example.com</literal> | |
199 и по одному запросу на второй и третий серверы. | |
188 Если при попытке работы с сервером произошла ошибка, то запрос будет | 200 Если при попытке работы с сервером произошла ошибка, то запрос будет |
189 передан следующему серверу и так до тех пор, пока не будут опробованы | 201 передан следующему серверу, и так до тех пор, пока не будут опробованы |
190 все работающие сервера. Если не удастся получить успешный ответ | 202 все работающие серверы. |
191 от всех серверов, то клиенту будет возвращён результат работы | 203 Если не удастся получить успешный ответ |
204 ни от одного из серверов, то клиенту будет возвращён результат работы | |
192 с последним сервером. | 205 с последним сервером. |
193 </para> | 206 </para> |
194 | 207 |
195 </directive> | 208 </directive> |
196 | 209 |
197 </section> | 210 </section> |
198 | 211 |
199 | 212 |
200 <section name="Встроенные переменные" id="variables"> | 213 <section id="variables" name="Встроенные переменные"> |
201 | 214 |
202 <para> | 215 <para> |
203 Модуль ngx_http_upstream_module поддерживает следующие встроенные переменные: | 216 Модуль <literal>ngx_http_upstream_module</literal> |
204 <list type="bullet"> | 217 поддерживает следующие встроенные переменные: |
205 | 218 <list type="tag"> |
206 <listitem> | 219 |
207 $upstream_addr — в переменной хранятся ip-адрес и порт сервера | 220 <tag-name><var>$upstream_addr</var></tag-name> |
208 или путь к unix-сокету. | 221 <tag-desc> |
222 хранит IP-адрес и порт сервера или путь к UNIX-сокету. | |
209 Если при обработке запроса были сделаны обращения к нескольким серверам, | 223 Если при обработке запроса были сделаны обращения к нескольким серверам, |
210 то их адреса разделяются запятой, например, | 224 то их адреса разделяются запятой, например, |
211 "192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock". | 225 “<literal>192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock</literal>”. |
212 Если произошло внутреннее перенаправление от одной группы серверов на другую | 226 Если произошло внутреннее перенаправление от одной группы серверов на другую |
213 с помощью | 227 с помощью |
214 "X-Accel-Redirect" или error_page, то эти группы серверов разделяются | 228 <header>X-Accel-Redirect</header> или |
215 двоеточием, например, | 229 <link doc="ngx_http_core_module.xml" id="error_page"/>, |
216 "192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock : 192.168.10.1:80, 192.168.10.2:80". | 230 то эти группы серверов разделяются двоеточием, например, |
217 </listitem> | 231 “<literal>192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock : 192.168.10.1:80, 192.168.10.2:80</literal>”. |
218 | 232 </tag-desc> |
219 <listitem> | 233 |
220 $upstream_response_time — в переменной хранятся времена ответов серверов | 234 <tag-name><var>$upstream_response_time</var></tag-name> |
221 в секундах с точностью до миллисекунд. | 235 <tag-desc> |
236 хранит времена ответов серверов в секундах с точностью до миллисекунд. | |
222 Несколько ответов также разделяются запятыми и двоеточиями. | 237 Несколько ответов также разделяются запятыми и двоеточиями. |
223 </listitem> | 238 </tag-desc> |
224 | 239 |
225 <listitem> | 240 <tag-name><var>$upstream_status</var></tag-name> |
226 $upstream_status — в переменной хранятся коды ответов серверов. | 241 <tag-desc> |
242 хранит коды ответов серверов. | |
227 Несколько ответов также разделяются запятыми и двоеточиями. | 243 Несколько ответов также разделяются запятыми и двоеточиями. |
228 </listitem> | 244 </tag-desc> |
229 | 245 |
230 <listitem> | 246 <tag-name><var>$upstream_http_...</var></tag-name> |
231 $upstream_http_... — в переменных хранятся строки заголовков ответов | 247 <tag-desc> |
232 серверов, например, строка заголовка ответа "Server" доступна в переменной | 248 хранят поля заголовка ответа сервера. |
233 $upstream_http_server. Необходимо иметь в виду, что запоминаются только | 249 Например, поле заголовка ответа <header>Server</header> |
234 строки последнего сервера. | 250 доступно в переменной <var>$upstream_http_server</var>. |
235 </listitem> | 251 Необходимо иметь в виду, что запоминаются только поля заголовка ответа |
252 последнего сервера. | |
253 </tag-desc> | |
236 | 254 |
237 </list> | 255 </list> |
238 </para> | 256 </para> |
239 | 257 |
240 </section> | 258 </section> |