Mercurial > hg > nginx-site
comparison xml/ru/docs/http/ngx_http_proxy_module.xml @ 273:44ab4026d9f5
Fixed markup and spelling, sorted directives, added missing links,
changed some wording.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Mon, 26 Dec 2011 11:37:06 +0000 |
parents | 4c6d2c614d2c |
children | fa1213cffc34 |
comparison
equal
deleted
inserted
replaced
272:5d87f76cdfab | 273:44ab4026d9f5 |
---|---|
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_proxy_module" | 5 <module name="Модуль ngx_http_proxy_module" |
6 link="/ru/docs/http/ngx_http_proxy_module.html" | 6 link="/ru/docs/http/ngx_http_proxy_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 Модуль ngx_http_proxy_module позволяет передавать запросы другому серверу. | 12 Модуль <literal>ngx_http_proxy_module</literal> позволяет передавать |
13 запросы другому серверу. | |
13 </para> | 14 </para> |
14 | 15 |
15 </section> | 16 </section> |
16 | 17 |
17 | 18 |
18 <section name="Пример конфигурации" id="example"> | 19 <section id="example" name="Пример конфигурации"> |
19 | 20 |
20 <para> | 21 <para> |
21 <example> | 22 <example> |
22 location / { | 23 location / { |
23 proxy_pass http://localhost:8000; | 24 proxy_pass http://localhost:8000; |
24 proxy_set_header Host $host; | 25 proxy_set_header Host $host; |
25 proxy_set_header X-Real-IP $remote_addr; | 26 proxy_set_header X-Real-IP $remote_addr; |
26 } | 27 } |
27 </example> | 28 </example> |
28 </para> | 29 </para> |
29 | 30 |
30 </section> | 31 </section> |
31 | 32 |
32 | 33 |
33 <section name="Директивы" id="directives"> | 34 <section id="directives" name="Директивы"> |
34 | 35 |
35 <directive name="proxy_buffer_size"> | 36 <directive name="proxy_buffer_size"> |
36 <syntax><value>размер</value></syntax> | 37 <syntax><value>размер</value></syntax> |
37 <default>4k/8k</default> | 38 <default>4k|8k</default> |
38 <context>http, server, location</context> | 39 <context>http</context> |
39 | 40 <context>server</context> |
40 <para> | 41 <context>location</context> |
41 Директива задаёт размер буфера, в который будет читаться | 42 |
43 <para> | |
44 Задаёт размер буфера, в который будет читаться | |
42 первая часть ответа, получаемого от проксируемого сервера. | 45 первая часть ответа, получаемого от проксируемого сервера. |
43 В этой части ответа находится, как правило, небольшой заголовок ответа. | 46 В этой части ответа находится, как правило, небольшой заголовок ответа. |
44 По умолчанию размер буфера равен размеру одного буфера в директиве | 47 По умолчанию размер буфера равен размеру одного буфера в директиве |
45 <link id="proxy_buffers"/>, однако его можно сделать меньше. | 48 <link id="proxy_buffers"/>, однако его можно сделать меньше. |
46 </para> | 49 </para> |
49 | 52 |
50 | 53 |
51 <directive name="proxy_buffering"> | 54 <directive name="proxy_buffering"> |
52 <syntax><literal>on</literal> | <literal>off</literal></syntax> | 55 <syntax><literal>on</literal> | <literal>off</literal></syntax> |
53 <default>on</default> | 56 <default>on</default> |
54 <context>http, server, location</context> | 57 <context>http</context> |
55 | 58 <context>server</context> |
56 <para> | 59 <context>location</context> |
57 Директива разрешает использовать буферизацию ответа проксируемого сервера. | 60 |
61 <para> | |
62 Разрешает или запрещает использовать буферизацию ответа проксируемого сервера. | |
63 </para> | |
64 | |
65 <para> | |
58 Если буферизация включена, то nginx принимает ответ проксируемого сервера | 66 Если буферизация включена, то nginx принимает ответ проксируемого сервера |
59 как можно быстрее, сохраняя его в буфера, заданные директивами | 67 как можно быстрее, сохраняя его в буферы, заданные директивами |
60 <link id="proxy_buffer_size"/> и <link id="proxy_buffers"/>. | 68 <link id="proxy_buffer_size"/> и <link id="proxy_buffers"/>. |
61 Если ответ не помещается полностью в память, то его часть записывается на диск. | 69 Если ответ не вмещается целиком в память, то его часть записывается на диск. |
62 </para> | 70 </para> |
63 | 71 |
64 <para> | 72 <para> |
65 Если буферизация выключена, то ответ синхронно передаётся клиенту сразу же | 73 Если буферизация выключена, то ответ синхронно передаётся клиенту сразу же |
66 по мере его поступления. nginx не пытается считать весь ответ проксируемого | 74 по мере его поступления. |
67 сервера, максимальный размер данных, который nginx может принять от сервера | 75 nginx не пытается считать весь ответ проксируемого сервера. |
76 Максимальный размер данных, который nginx может принять от сервера, | |
68 задаётся директивой <link id="proxy_buffer_size"/>. | 77 задаётся директивой <link id="proxy_buffer_size"/>. |
69 </para> | 78 </para> |
70 | 79 |
71 </directive> | 80 </directive> |
72 | 81 |
73 | 82 |
74 <directive name="proxy_buffers"> | 83 <directive name="proxy_buffers"> |
75 <syntax><value>число</value> <value>размер</value></syntax> | 84 <syntax><value>число</value> <value>размер</value></syntax> |
76 <default>8 4k/8k</default> | 85 <default>8 4k|8k</default> |
77 <context>http, server, location</context> | 86 <context>http</context> |
78 | 87 <context>server</context> |
79 <para> | 88 <context>location</context> |
80 Директива задаёт число и размер буферов для одного соединения, | 89 |
90 <para> | |
91 Задаёт число и размер буферов для одного соединения, | |
81 в которые будет читаться ответ, получаемый от проксируемого сервера. | 92 в которые будет читаться ответ, получаемый от проксируемого сервера. |
82 По умолчанию размер одного буфера равен размеру страницы, в зависимости | 93 По умолчанию размер одного буфера равен размеру страницы. |
83 от платформы это или 4K, или 8K. | 94 В зависимости от платформы это или 4K, или 8K. |
84 </para> | 95 </para> |
85 | 96 |
86 </directive> | 97 </directive> |
87 | 98 |
88 | 99 |
89 <directive name="proxy_cache"> | 100 <directive name="proxy_cache"> |
90 <syntax><value>зона</value> | <literal>off</literal></syntax> | 101 <syntax><value>зона</value> | <literal>off</literal></syntax> |
91 <default>off</default> | 102 <default>off</default> |
92 <context>http, server, location</context> | 103 <context>http</context> |
93 | 104 <context>server</context> |
94 <para> | 105 <context>location</context> |
95 Директива задаёт зону для кэширования. | 106 |
107 <para> | |
108 Задаёт зону для кэширования. | |
96 Одна и та же зона может использоваться в нескольких местах. | 109 Одна и та же зона может использоваться в нескольких местах. |
97 Параметр "off" запрещает кэширование, унаследованное с предыдущего | 110 Параметр <literal>off</literal> запрещает кэширование, унаследованное |
98 уровня конфигурации. | 111 с предыдущего уровня конфигурации. |
99 </para> | 112 </para> |
100 | 113 |
101 </directive> | 114 </directive> |
102 | 115 |
103 | 116 |
104 <directive name="proxy_cache_bypass"> | 117 <directive name="proxy_cache_bypass"> |
105 <syntax><value>строка</value> ...</syntax> | 118 <syntax><value>строка</value> ...</syntax> |
106 <default/> | 119 <default/> |
107 <context>http, server, location</context> | 120 <context>http</context> |
108 | 121 <context>server</context> |
109 <para> | 122 <context>location</context> |
110 Директива задаёт условия, при которых ответ не будет браться из кэша. | 123 |
111 Если значение хотя бы одной из строк переменных не пустое и не равно "0", | 124 <para> |
125 Задаёт условия, при которых ответ не будет браться из кэша. | |
126 Если значение хотя бы одного из строковых параметров непустое и не равно “0”, | |
112 то ответ не берётся из кэша: | 127 то ответ не берётся из кэша: |
113 <example> | 128 <example> |
114 proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; | 129 proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; |
115 proxy_cache_bypass $http_pragma $http_authorization; | 130 proxy_cache_bypass $http_pragma $http_authorization; |
116 </example> | 131 </example> |
117 Можно использовать совместно с директивой <link id="proxy_no_cache"/>. | 132 Можно использовать совместно с директивой <link id="proxy_no_cache"/>. |
118 </para> | 133 </para> |
119 | 134 |
120 </directive> | 135 </directive> |
121 | 136 |
122 | 137 |
123 <directive name="proxy_cache_key"> | 138 <directive name="proxy_cache_key"> |
124 <syntax><value>строка</value></syntax> | 139 <syntax><value>строка</value></syntax> |
125 <default>$scheme$proxy_host$request_uri</default> | 140 <default>$scheme$proxy_host$request_uri</default> |
126 <context>http, server, location</context> | 141 <context>http</context> |
127 | 142 <context>server</context> |
128 <para> | 143 <context>location</context> |
129 Директива задаёт ключ для кэширования, например, | 144 |
130 <example> | 145 <para> |
131 proxy_cache_key "$host$request_uri $cookie_user"; | 146 Задаёт ключ для кэширования, например, |
147 <example> | |
148 proxy_cache_key "$host$request_uri $cookie_user"; | |
132 </example> | 149 </example> |
133 По умолчанию значение директивы близко к строке | 150 По умолчанию значение директивы близко к строке |
134 <example> | 151 <example> |
135 proxy_cache_key $scheme$proxy_host$uri$is_args$args; | 152 proxy_cache_key $scheme$proxy_host$uri$is_args$args; |
136 </example> | 153 </example> |
154 </para> | |
155 | |
156 </directive> | |
157 | |
158 | |
159 <directive name="proxy_cache_min_uses"> | |
160 <syntax><value>число</value></syntax> | |
161 <default>1</default> | |
162 <context>http</context> | |
163 <context>server</context> | |
164 <context>location</context> | |
165 | |
166 <para> | |
167 Задаёт число запросов, после которого ответ будет закэширован. | |
137 </para> | 168 </para> |
138 | 169 |
139 </directive> | 170 </directive> |
140 | 171 |
141 | 172 |
148 [<literal>max_size</literal>=<value>размер</value>]</syntax> | 179 [<literal>max_size</literal>=<value>размер</value>]</syntax> |
149 <default/> | 180 <default/> |
150 <context>http</context> | 181 <context>http</context> |
151 | 182 |
152 <para> | 183 <para> |
153 Директива задаёт путь и другие параметры кэша. Данные кэша хранятся в файлах. | 184 Задаёт путь и другие параметры кэша. |
154 Ключом и именем файла в кэше является результат функции md5 от | 185 Данные кэша хранятся в файлах. |
155 проксированного URL. Параметр levels задаёт уровни иерархии кэша, | 186 Ключом и именем файла в кэше является результат функции MD5 |
187 от проксированного URL. | |
188 Параметр <literal>levels</literal> задаёт уровни иерархии кэша, | |
156 например, при использовании | 189 например, при использовании |
157 <example> | 190 <example> |
158 proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m; | 191 proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m; |
159 </example> | 192 </example> |
160 имена файлов в кэше будут такого вида: | 193 имена файлов в кэше будут такого вида: |
161 <example> | 194 <example> |
162 /data/nginx/cache/<emphasis>c/29</emphasis>/b7f54b2df7773722d382f4809d650<emphasis>29c</emphasis> | 195 /data/nginx/cache/<emphasis>c/29</emphasis>/b7f54b2df7773722d382f4809d650<emphasis>29c</emphasis> |
163 </example> | 196 </example> |
174 <link id="proxy_temp_path"/> для данного location. | 207 <link id="proxy_temp_path"/> для данного location. |
175 </para> | 208 </para> |
176 | 209 |
177 <para> | 210 <para> |
178 Кроме того, все активные ключи и информация о данных хранятся в разделяемой | 211 Кроме того, все активные ключи и информация о данных хранятся в разделяемой |
179 памяти — зоне, имя и размер которой задаётся параметром keys_zone. | 212 памяти — зоне, имя и размер которой задаётся параметром |
180 Если к данным кэша не обращются в течение времени, заданного параметром | 213 <literal>keys_zone</literal>. |
181 inactive, то данные удаляются, независимо от их свежести. | 214 Если к данным кэша не обращаются в течение времени, заданного параметром |
182 По умолчанию inactive равен 10 минутам. | 215 <literal>inactive</literal>, то данные удаляются, независимо от их свежести. |
183 </para> | 216 По умолчанию <literal>inactive</literal> равен 10 минутам. |
184 | 217 </para> |
185 <para> | 218 |
186 Специальный процесс "cache manager" следит за максимальным размером кэша, | 219 <para> |
187 заданным параметром max_size, и при превышении его размеров удаляет | 220 Специальный процесс “cache manager” следит за максимальным размером кэша, |
188 самые невостребованные данные. | 221 заданным параметром <literal>max_size</literal>, и при превышении |
189 </para> | 222 его размеров удаляет самые невостребованные данные. |
190 | |
191 </directive> | |
192 | |
193 | |
194 <directive name="proxy_cache_min_uses"> | |
195 <syntax><value>число</value></syntax> | |
196 <default>1</default> | |
197 <context>http, server, location</context> | |
198 | |
199 <para> | |
200 Директива задаёт число запросов, после которого ответ будет | |
201 закэширован. | |
202 </para> | |
203 | |
204 </directive> | |
205 | |
206 | |
207 <directive name="proxy_cache_valid"> | |
208 <syntax><value>ответ</value> ... <value>время</value></syntax> | |
209 <default/> | |
210 <context>http, server, location</context> | |
211 | |
212 <para> | |
213 Директива задаёт время кэширования для разных ответов. | |
214 Например, директивы | |
215 <example> | |
216 proxy_cache_valid 200 302 10m; | |
217 proxy_cache_valid 404 1m; | |
218 </example> | |
219 задают время кэширования 10 минут для ответов 200 и 302, | |
220 и 1 минуту для ответов 404. | |
221 </para> | |
222 | |
223 <para> | |
224 Если указано только время кэширования, | |
225 <example> | |
226 proxy_cache_valid 5m; | |
227 </example> | |
228 то кэшируются только ответы 200, 301 и 302. | |
229 </para> | |
230 | |
231 <para> | |
232 Кроме того, может кэшировать любые ответы с помощью параметра "any": | |
233 <example> | |
234 proxy_cache_valid 200 302 10m; | |
235 proxy_cache_valid 301 1h; | |
236 proxy_cache_valid any 1m; | |
237 </example> | |
238 </para> | 223 </para> |
239 | 224 |
240 </directive> | 225 </directive> |
241 | 226 |
242 | 227 |
252 <literal>http_504</literal> | | 237 <literal>http_504</literal> | |
253 <literal>http_404</literal> | | 238 <literal>http_404</literal> | |
254 <literal>off</literal> | 239 <literal>off</literal> |
255 ...</syntax> | 240 ...</syntax> |
256 <default>off</default> | 241 <default>off</default> |
257 <context>http, server, location</context> | 242 <context>http</context> |
258 | 243 <context>server</context> |
259 <para> | 244 <context>location</context> |
260 Директива определяет, в каких случаях можно использовать | 245 |
246 <para> | |
247 Определяет, в каких случаях можно использовать | |
261 устаревший закэшированный ответ, если при работе с проксированным | 248 устаревший закэшированный ответ, если при работе с проксированным |
262 сервером возникла ошибка. Параметры директивы совпадают с параметрами | 249 сервером возникла ошибка. Параметры директивы совпадают с параметрами |
263 директивы <link id="proxy_next_upstream"/>. | 250 директивы <link id="proxy_next_upstream"/>. |
264 И, кроме того, есть параметр updating, которой разрешает использовать | 251 Кроме того, дополнительный параметр <literal>updating</literal> |
265 устаревший закэшированный ответ, если на данный момент он уже обновляется. | 252 разрешает использовать устаревший закэшированный ответ, |
253 если на данный момент он уже обновляется. | |
254 </para> | |
255 | |
256 </directive> | |
257 | |
258 | |
259 <directive name="proxy_cache_valid"> | |
260 <syntax>[<value>код</value> ...] <value>время</value></syntax> | |
261 <default/> | |
262 <context>http</context> | |
263 <context>server</context> | |
264 <context>location</context> | |
265 | |
266 <para> | |
267 Задаёт время кэширования для разных кодов ответа. | |
268 Например, директивы | |
269 <example> | |
270 proxy_cache_valid 200 302 10m; | |
271 proxy_cache_valid 404 1m; | |
272 </example> | |
273 задают время кэширования 10 минут для ответов с кодами 200 и 302, | |
274 и 1 минуту для ответов с кодом 404. | |
275 </para> | |
276 | |
277 <para> | |
278 Если указано только <value>время</value> кэширования, | |
279 <example> | |
280 proxy_cache_valid 5m; | |
281 </example> | |
282 то кэшируются только ответы 200, 301 и 302. | |
283 </para> | |
284 | |
285 <para> | |
286 Кроме того, можно кэшировать любые ответы с помощью параметра | |
287 <literal>any</literal>: | |
288 <example> | |
289 proxy_cache_valid 200 302 10m; | |
290 proxy_cache_valid 301 1h; | |
291 proxy_cache_valid any 1m; | |
292 </example> | |
266 </para> | 293 </para> |
267 | 294 |
268 </directive> | 295 </directive> |
269 | 296 |
270 | 297 |
271 <directive name="proxy_connect_timeout"> | 298 <directive name="proxy_connect_timeout"> |
272 <syntax><value>время</value></syntax> | 299 <syntax><value>время</value></syntax> |
273 <default>60</default> | 300 <default>60s</default> |
274 <context>http, server, location</context> | 301 <context>http</context> |
275 | 302 <context>server</context> |
276 <para> | 303 <context>location</context> |
277 Директива задаёт таймаут для соединения с проксированным сервером. | 304 |
305 <para> | |
306 Задаёт таймаут для соединения с проксированным сервером. | |
278 Необходимо иметь в виду, что этот таймаут не может быть больше 75 секунд. | 307 Необходимо иметь в виду, что этот таймаут не может быть больше 75 секунд. |
279 </para> | 308 </para> |
280 | 309 |
281 </directive> | 310 </directive> |
282 | 311 |
283 | 312 |
284 <directive name="proxy_hide_header"> | 313 <directive name="proxy_hide_header"> |
285 <syntax><value>имя</value></syntax> | 314 <syntax><value>имя</value></syntax> |
286 <default/> | 315 <default/> |
287 <context>http, server, location</context> | 316 <context>http</context> |
288 | 317 <context>server</context> |
289 <para> | 318 <context>location</context> |
290 nginx не передаёт клиенту строки заголовка "Date", "Server", "X-Pad" и | 319 |
291 "X-Accel-..." из ответа проксированного сервера. | 320 <para> |
292 Директива proxy_hide_header задаёт дополнительные строки. | 321 nginx не передаёт клиенту поля заголовка <header>Date</header>, |
293 Если же строки нужно наоброт разрешить, то нужно воспользоваться | 322 <header>Server</header>, <header>X-Pad</header> и |
323 <header>X-Accel-...</header> из ответа проксированного сервера. | |
324 Директива <literal>proxy_hide_header</literal> задаёт дополнительные поля. | |
325 Если же поля нужно напротив разрешить, следует воспользоваться | |
294 директивой <link id="proxy_pass_header"/>. | 326 директивой <link id="proxy_pass_header"/>. |
295 </para> | 327 </para> |
296 | 328 |
297 </directive> | 329 </directive> |
298 | 330 |
299 | 331 |
300 <directive name="proxy_ignore_client_abort"> | 332 <directive name="proxy_ignore_client_abort"> |
301 <syntax><literal>on</literal> | <literal>off</literal></syntax> | 333 <syntax><literal>on</literal> | <literal>off</literal></syntax> |
302 <default>off</default> | 334 <default>off</default> |
303 <context>http, server, location</context> | 335 <context>http</context> |
304 | 336 <context>server</context> |
305 <para> | 337 <context>location</context> |
306 Директива определяет, закрывать ли соединение с проксированным сервером | 338 |
339 <para> | |
340 Определяет, закрывать ли соединение с проксированным сервером | |
307 в случае, если клиент закрыл соединение, не дождавшись ответа. | 341 в случае, если клиент закрыл соединение, не дождавшись ответа. |
308 </para> | 342 </para> |
309 | 343 |
310 </directive> | 344 </directive> |
311 | 345 |
312 | 346 |
313 <directive name="proxy_ignore_headers"> | 347 <directive name="proxy_ignore_headers"> |
314 <syntax><value>имя</value> ...</syntax> | 348 <syntax><value>поле</value> ...</syntax> |
315 <default/> | 349 <default/> |
316 <context>http, server, location</context> | 350 <context>http</context> |
317 | 351 <context>server</context> |
318 <para> | 352 <context>location</context> |
319 Директива proxy_ignore_headers запрещает обработку некоторых | 353 |
320 строк заголовка из ответа проксированного сервера. | 354 <para> |
321 В директиве можно указать строки "X-Accel-Redirect", "X-Accel-Expires", | 355 Запрещает обработку некоторых полей заголовка из ответа проксированного сервера. |
322 "X-Accel-Limit-Rate" (1.1.6), "X-Accel-Buffering" (1.1.6), | 356 В директиве можно указать поля <header>X-Accel-Redirect</header>, |
323 "X-Accel-Charset" (1.1.6), "Expires", "Cache-Control" и "Set-Cookie" (0.8.44). | 357 <header>X-Accel-Expires</header>, <header>X-Accel-Limit-Rate</header> (1.1.6), |
358 <header>X-Accel-Buffering</header> (1.1.6), | |
359 <header>X-Accel-Charset</header> (1.1.6), <header>Expires</header>, | |
360 <header>Cache-Control</header> и <header>Set-Cookie</header> (0.8.44). | |
324 </para> | 361 </para> |
325 | 362 |
326 </directive> | 363 </directive> |
327 | 364 |
328 | 365 |
329 <directive name="proxy_intercept_errors"> | 366 <directive name="proxy_intercept_errors"> |
330 <syntax><literal>on</literal> | <literal>off</literal></syntax> | 367 <syntax><literal>on</literal> | <literal>off</literal></syntax> |
331 <default>off</default> | 368 <default>off</default> |
332 <context>http, server, location</context> | 369 <context>http</context> |
333 | 370 <context>server</context> |
334 <para> | 371 <context>location</context> |
335 Директива определяет, передавать ли клиенту проксированные ответы с кодом | 372 |
336 больше или равные 400 или же перенаправлять их на обработку nginx'у с помощью | 373 <para> |
337 директивы error_page. | 374 Определяет, передавать ли клиенту проксированные ответы с кодом |
375 больше либо равным 400, или же перенаправлять их на обработку nginx'у с помощью | |
376 директивы <link doc="ngx_http_core_module.xml" id="error_page"/>. | |
338 </para> | 377 </para> |
339 | 378 |
340 </directive> | 379 </directive> |
341 | 380 |
342 | 381 |
351 <literal>http_504</literal> | | 390 <literal>http_504</literal> | |
352 <literal>http_404</literal> | | 391 <literal>http_404</literal> | |
353 <literal>off</literal> | 392 <literal>off</literal> |
354 ...</syntax> | 393 ...</syntax> |
355 <default>error timeout</default> | 394 <default>error timeout</default> |
356 <context>http, server, location</context> | 395 <context>http</context> |
357 | 396 <context>server</context> |
358 <para> | 397 <context>location</context> |
359 Директива определяет, в каких случаях запрос будет передан следующему серверу: | 398 |
360 <list type="bullet"> | 399 <para> |
361 | 400 Определяет, в каких случаях запрос будет передан следующему серверу: |
362 <listitem> | 401 <list type="tag"> |
363 error — произшла ошибка соединения с сервером, передачи ему запроса или | 402 |
364 чтения заголовка ответа сервера; | 403 <tag-name><literal>error</literal></tag-name> |
365 </listitem> | 404 <tag-desc>произошла ошибка соединения с сервером, передачи ему запроса или |
366 | 405 чтения заголовка ответа сервера;</tag-desc> |
367 <listitem> | 406 |
368 timeout — произошёл таймаут во время соединения с сервером, | 407 <tag-name><literal>timeout</literal></tag-name> |
369 передачи ему запроса или чтения заголовка ответа сервера; | 408 <tag-desc>произошёл таймаут во время соединения с сервером, |
370 </listitem> | 409 передачи ему запроса или чтения заголовка ответа сервера;</tag-desc> |
371 | 410 |
372 <listitem> | 411 <tag-name><literal>invalid_header</literal></tag-name> |
373 invalid_header — сервер вернул пустой или неверный ответ; | 412 <tag-desc>сервер вернул пустой или неверный ответ;</tag-desc> |
374 </listitem> | 413 |
375 | 414 <tag-name><literal>http_500</literal></tag-name> |
376 <listitem> | 415 <tag-desc>сервер вернул ответ с кодом 500;</tag-desc> |
377 http_500 — сервер вернул ответ с кодом 500; | 416 |
378 </listitem> | 417 <tag-name><literal>http_502</literal></tag-name> |
379 | 418 <tag-desc>сервер вернул ответ с кодом 502;</tag-desc> |
380 <listitem> | 419 |
381 http_502 — сервер вернул ответ с кодом 502; | 420 <tag-name><literal>http_503</literal></tag-name> |
382 </listitem> | 421 <tag-desc>сервер вернул ответ с кодом 503;</tag-desc> |
383 | 422 |
384 <listitem> | 423 <tag-name><literal>http_504</literal></tag-name> |
385 http_503 — сервер вернул ответ с кодом 503; | 424 <tag-desc>сервер вернул ответ с кодом 504;</tag-desc> |
386 </listitem> | 425 |
387 | 426 <tag-name><literal>http_404</literal></tag-name> |
388 <listitem> | 427 <tag-desc>сервер вернул ответ с кодом 404;</tag-desc> |
389 http_504 — сервер вернул ответ с кодом 504; | 428 |
390 </listitem> | 429 <tag-name><literal>off</literal></tag-name> |
391 | 430 <tag-desc>запрещает передачу запроса следующему серверу.</tag-desc> |
392 <listitem> | |
393 http_404 — сервер вернул ответ с кодом 404; | |
394 </listitem> | |
395 | |
396 <listitem> | |
397 off — запрещает передачу запроса следующему серверу; | |
398 </listitem> | |
399 | 431 |
400 </list> | 432 </list> |
401 </para> | 433 </para> |
402 | 434 |
403 <para> | 435 <para> |
411 | 443 |
412 | 444 |
413 <directive name="proxy_no_cache"> | 445 <directive name="proxy_no_cache"> |
414 <syntax><value>строка</value> ...</syntax> | 446 <syntax><value>строка</value> ...</syntax> |
415 <default/> | 447 <default/> |
416 <context>http, server, location</context> | 448 <context>http</context> |
417 | 449 <context>server</context> |
418 <para> | 450 <context>location</context> |
419 Директива задаёт условия, при которых ответ не будет сохраняться в кэш. | 451 |
420 Если значение хотя бы одной из строк переменных не пустое и не равно "0", | 452 <para> |
453 Задаёт условия, при которых ответ не будет сохраняться в кэш. | |
454 Если значение хотя бы одного из строковых параметров непустое и не равно “0”, | |
421 то ответ не будет сохранён: | 455 то ответ не будет сохранён: |
422 <example> | 456 <example> |
423 proxy_no_cache $cookie_nocache $arg_nocache$arg_comment; | 457 proxy_no_cache $cookie_nocache $arg_nocache$arg_comment; |
424 proxy_no_cache $http_pragma $http_authorization; | 458 proxy_no_cache $http_pragma $http_authorization; |
425 </example> | 459 </example> |
426 Можно использовать совместно с директивой <link id="proxy_cache_bypass"/>. | 460 Можно использовать совместно с директивой <link id="proxy_cache_bypass"/>. |
427 </para> | 461 </para> |
428 | 462 |
429 </directive> | 463 </directive> |
430 | 464 |
431 | 465 |
432 <directive name="proxy_pass"> | 466 <directive name="proxy_pass"> |
433 <syntax><value>URL</value></syntax> | 467 <syntax><value>URL</value></syntax> |
434 <default/> | 468 <default/> |
435 <context>location, if в location, limit_except</context> | 469 <context>location</context> |
436 | 470 <context>if в location</context> |
437 <para> | 471 <context>limit_except</context> |
438 Директива задаёт адрес проксируемоего сервера и URI, на который | 472 |
473 <para> | |
474 Задаёт адрес проксируемоего сервера и URI, на который | |
439 будет отображаться location. | 475 будет отображаться location. |
440 Адрес может быть указан в виде доменного имени или адреса и порта, например, | 476 Адрес может быть указан в виде доменного имени или адреса и порта, например, |
441 <example> | 477 <example> |
442 proxy_pass http://localhost:8000/uri/; | 478 proxy_pass http://localhost:8000/uri/; |
443 </example> | 479 </example> |
444 или в виде пути unix сокета: | 480 или в виде пути UNIX-сокета: |
445 <example> | 481 <example> |
446 proxy_pass http://unix:/tmp/backend.socket:/uri/; | 482 proxy_pass http://unix:/tmp/backend.socket:/uri/; |
447 </example> | 483 </example> |
448 путь указан после слова unix и заключён между двумя двоеточиями. | 484 путь указан после слова “<literal>unix</literal>” |
449 </para> | 485 и заключён между двумя двоеточиями. |
450 | 486 </para> |
451 <para> | 487 |
452 Если доменное имя резолвится в несколько адресов, то все они будут | 488 <para> |
453 использоваться в режиме round-robin. | 489 Если доменному имени соответствует несколько адресов, то все они будут |
454 И кроме того, адрес можно задать | 490 использоваться по очереди (round-robin). |
491 И, кроме того, адрес можно задать | |
455 <link doc="ngx_http_upstream_module.xml">группой серверов</link>. | 492 <link doc="ngx_http_upstream_module.xml">группой серверов</link>. |
456 </para> | 493 </para> |
457 | 494 |
458 <para> | 495 <para> |
459 При передаче запроса серверу часть URI, соответствующая location, | 496 При передаче запроса серверу часть URI, соответствующая location, |
460 заменяется на URI, указанный в директиве proxy_pass. | 497 заменяется на URI, указанный в директиве <literal>proxy_pass</literal>. |
461 Но из этого правила есть два исключения, в которых нельзя определить | 498 Но из этого правила есть два исключения, в которых нельзя определить |
462 заменяемый location: | 499 заменяемый location: |
463 <list type="bullet"> | 500 <list type="bullet"> |
464 | 501 |
465 <listitem> | 502 <listitem> |
466 если location задан регулярным выражением; | 503 если location задан регулярным выражением; |
467 </listitem> | 504 </listitem> |
468 | 505 |
469 <listitem> | 506 <listitem> |
470 если внутри проксируемого location с помощью директивы rewrite изменяется | 507 если внутри проксируемого location с помощью директивы |
471 URI и именно с этой конфигурацией будет обрабатываться запрос (break): | 508 <link doc="ngx_http_rewrite_module.xml" id="rewrite"/> изменяется |
472 <example> | 509 URI, и именно с этой конфигурацией будет обрабатываться запрос |
473 location /name/ { | 510 (<literal>break</literal>): |
474 rewrite /name/([^/]+) /users?name=$1 break; | 511 <example> |
475 proxy_pass http://127.0.0.1; | 512 location /name/ { |
513 rewrite /name/([^/]+) /users?name=$1 break; | |
514 proxy_pass http://127.0.0.1; | |
476 } | 515 } |
477 </example> | 516 </example> |
478 Для этих случаев URI передаётся без отображения. | 517 Для этих случаев URI передаётся без отображения. |
479 </listitem> | 518 </listitem> |
480 | 519 |
481 </list> | 520 </list> |
482 </para> | 521 </para> |
483 | 522 |
484 <para> | 523 <para> |
485 Кроме того, можно указать, чтобы URI запроса передавалось в том же виде, | 524 Кроме того, можно указать, чтобы URI запроса передавался в том же виде, |
486 как его прислал клиент, а не в в обработанном виде. | 525 в каком его прислал клиент, а не в обработанном виде. |
487 Во время обработки | 526 Во время обработки |
488 <list type="bullet"> | 527 <list type="bullet"> |
489 | 528 |
490 <listitem> | 529 <listitem> |
491 два и более слэшей преобразуются в один слэш: "//" — "/"; | 530 два и более слэшей заменяются на один: “//” — “/”; |
492 </listitem> | 531 </listitem> |
493 | 532 |
494 <listitem> | 533 <listitem> |
495 убираются ссылки на текущий каталог: "/./" — "/"; | 534 убираются ссылки на текущий каталог: “/./” — “/”; |
496 </listitem> | 535 </listitem> |
497 | 536 |
498 <listitem> | 537 <listitem> |
499 убираются ссылки на предыдущий каталог: "/dir/../" — "/". | 538 убираются ссылки на предыдущий каталог: “/dir/../” — “/”. |
500 </listitem> | 539 </listitem> |
501 | 540 |
502 </list> | 541 </list> |
503 </para> | 542 </para> |
504 | 543 |
505 <para> | 544 <para> |
506 Если на сервер нужно передать URI в необработанном виде, то для этого | 545 Если на сервер нужно передать URI в необработанном виде, то для этого |
507 в директиве proxy_pass нужно указать URL сервера без URI: | 546 в директиве <literal>proxy_pass</literal> нужно указать URL сервера без URI: |
508 <example> | 547 <example> |
509 location /some/path/ { | 548 location /some/path/ { |
510 proxy_pass http://127.0.0.1; | 549 proxy_pass http://127.0.0.1; |
511 } | 550 } |
512 </example> | 551 </example> |
513 </para> | 552 </para> |
514 | 553 |
515 <para> | 554 <para> |
516 Имя сервера, его порт и передаваемый URI можно также полностью задать | 555 Имя сервера, его порт и передаваемый URI можно также полностью задать |
517 в помощью переменных: | 556 с помощью переменных: |
518 <example> | 557 <example> |
519 proxy_pass http://$host$uri; | 558 proxy_pass http://$host$uri; |
520 </example> | 559 </example> |
521 или так: | 560 или так: |
522 <example> | 561 <example> |
523 proxy_pass $request; | 562 proxy_pass $request; |
524 </example> | 563 </example> |
525 </para> | 564 </para> |
526 | 565 |
527 <para> | 566 <para> |
528 В этом случае имя сервера ищется среди описанных | 567 В этом случае имя сервера ищется среди описанных |
529 <link doc="ngx_http_upstream_module.xml">групп серверов</link> | 568 <link doc="ngx_http_upstream_module.xml">групп серверов</link> |
530 и если не найдено, то определяется с помощью | 569 и если не найдено, то определяется с помощью |
531 <link doc="ngx_http_core_module.xml" id="resolver">resolver'а</link>. | 570 <link doc="ngx_http_core_module.xml" id="resolver"/>'а. |
532 </para> | 571 </para> |
533 | 572 |
534 </directive> | 573 </directive> |
535 | 574 |
536 | 575 |
537 <directive name="proxy_pass_header"> | 576 <directive name="proxy_pass_header"> |
538 <syntax><value>имя</value></syntax> | 577 <syntax><value>поле</value></syntax> |
539 <default/> | 578 <default/> |
540 <context>http, server, location</context> | 579 <context>http</context> |
541 | 580 <context>server</context> |
542 <para> | 581 <context>location</context> |
543 Директива разрешает передавать от проксируемого сервера клиенту | 582 |
544 запрещённые для передачи строки. | 583 <para> |
584 Разрешает передавать от проксируемого сервера клиенту | |
585 <link id="proxy_hide_header">запрещённые для передачи</link> поля заголовка. | |
586 </para> | |
587 | |
588 </directive> | |
589 | |
590 | |
591 <directive name="proxy_read_timeout"> | |
592 <syntax><value>время</value></syntax> | |
593 <default>60s</default> | |
594 <context>http</context> | |
595 <context>server</context> | |
596 <context>location</context> | |
597 | |
598 <para> | |
599 Задаёт таймаут при чтении ответа проксированного сервера. | |
600 Таймаут устанавливается не на всю передачу ответа, | |
601 а только между двумя операциями чтения. | |
602 Если по истечении этого времени проксируемый сервер ничего не передаст, | |
603 то nginx закрывает соединение. | |
545 </para> | 604 </para> |
546 | 605 |
547 </directive> | 606 </directive> |
548 | 607 |
549 | 608 |
550 <directive name="proxy_redirect"> | 609 <directive name="proxy_redirect"> |
551 <syntax> | 610 <syntax><literal>default</literal></syntax> |
552 <literal>default</literal> | | 611 <syntax><literal>off</literal></syntax> |
553 <literal>off</literal> | | 612 <syntax><value>перенаправление</value> <value>замена</value></syntax> |
554 <value>перенаправление</value> <value>замена</value></syntax> | |
555 <default>default</default> | 613 <default>default</default> |
556 <context>http</context> | 614 <context>http</context> |
557 <context>server</context> | 615 <context>server</context> |
558 <context>location</context> | 616 <context>location</context> |
559 | 617 |
560 <para> | 618 <para> |
561 Директива задаёт текст, который нужно изменить в строках заголовка | 619 Задаёт текст, который нужно изменить в полях заголовка |
562 <header>Location</header> и <header>Refresh</header> в ответе | 620 <header>Location</header> и <header>Refresh</header> в ответе |
563 проксируемого сервера. | 621 проксируемого сервера. |
564 Предположим, проксируемый сервер вернул строку | 622 Предположим, проксируемый сервер вернул поле заголовка |
565 <header>Location: http://localhost:8000/two/some/uri/</header>. | 623 “<literal>Location: http://localhost:8000/two/some/uri/</literal>”. |
566 Директива | 624 Директива |
567 <example> | 625 <example> |
568 proxy_redirect http://localhost:8000/two/ http://frontend/one/; | 626 proxy_redirect http://localhost:8000/two/ http://frontend/one/; |
569 </example> | 627 </example> |
570 перепишет эту строку в виде | 628 перепишет эту строку в виде |
571 <header>Location: http://frontend/one/some/uri/</header>. | 629 “<literal>Location: http://frontend/one/some/uri/</literal>”. |
572 </para> | 630 </para> |
573 | 631 |
574 <para> | 632 <para> |
575 В заменяемой строке можно не указывать имя сервера: | 633 В заменяемой строке можно не указывать имя сервера: |
576 <example> | 634 <example> |
578 </example> | 636 </example> |
579 тогда будет подставлено основное имя сервера и порт, если он отличен от 80. | 637 тогда будет подставлено основное имя сервера и порт, если он отличен от 80. |
580 </para> | 638 </para> |
581 | 639 |
582 <para> | 640 <para> |
583 Изменение по умолчанию, задаваемое значением <literal>default</literal>, использует | 641 Изменение по умолчанию, задаваемое значением <literal>default</literal>, |
584 параметры директив <link doc="ngx_http_core_module.xml" id="location"/> и | 642 использует параметры директив |
643 <link doc="ngx_http_core_module.xml" id="location"/> и | |
585 <link id="proxy_pass"/>. | 644 <link id="proxy_pass"/>. |
586 Поэтому две нижеприведённые конфигурации одинаковы: | 645 Поэтому две нижеприведённые конфигурации одинаковы: |
587 <example> | 646 <example> |
588 location /one/ { | 647 location /one/ { |
589 proxy_pass http://upstream:port/two/; | 648 proxy_pass http://upstream:port/two/; |
657 </para> | 716 </para> |
658 | 717 |
659 </directive> | 718 </directive> |
660 | 719 |
661 | 720 |
662 <directive name="proxy_read_timeout"> | |
663 <syntax><value>время</value></syntax> | |
664 <default>60</default> | |
665 <context>http, server, location</context> | |
666 | |
667 <para> | |
668 Директива задаёт таймаут при чтении ответа проксированного сервера. | |
669 Таймаут устанавливается не на всю передачу ответа, | |
670 а только между двумя операциями чтения. | |
671 Если по истечении этого времени проксируемый сервер ничего не передаст, | |
672 то nginx закрывает соединение. | |
673 </para> | |
674 | |
675 </directive> | |
676 | |
677 | |
678 <directive name="proxy_send_timeout"> | 721 <directive name="proxy_send_timeout"> |
679 <syntax><value>время</value></syntax> | 722 <syntax><value>время</value></syntax> |
680 <default>60</default> | 723 <default>60</default> |
681 <context>http, server, location</context> | 724 <context>http</context> |
682 | 725 <context>server</context> |
683 <para> | 726 <context>location</context> |
684 Директива задаёт таймаут при передаче запроса проксированному серверу. | 727 |
728 <para> | |
729 Задаёт таймаут при передаче запроса проксированному серверу. | |
685 Таймаут устанавливается не на всю передачу запроса, | 730 Таймаут устанавливается не на всю передачу запроса, |
686 а только между двумя операциями записи. | 731 а только между двумя операциями записи. |
687 Если по истечении этого времени проксируемый сервер не примет новых данных, | 732 Если по истечении этого времени проксируемый сервер не примет новых данных, |
688 то nginx закрывает соединение. | 733 то nginx закрывает соединение. |
689 </para> | 734 </para> |
690 | 735 |
691 </directive> | 736 </directive> |
692 | 737 |
693 | 738 |
694 <directive name="proxy_set_header"> | 739 <directive name="proxy_set_header"> |
695 <syntax><value>заголовок</value> <value>значение</value></syntax> | 740 <syntax><value>поле</value> <value>значение</value></syntax> |
696 <default>Host $proxy_host</default> | 741 <default>Host $proxy_host</default> |
697 <default>Connection close</default> | 742 <default>Connection close</default> |
698 <context>http, server, location</context> | 743 <context>http</context> |
699 | 744 <context>server</context> |
700 <para> | 745 <context>location</context> |
701 Директива позволяет переопределять или добавлять строки заголовка запроса, | 746 |
747 <para> | |
748 Позволяет переопределять или добавлять поля заголовка запроса, | |
702 передаваемые проксируемому серверу. | 749 передаваемые проксируемому серверу. |
703 В качестве значения можно использовать текст, переменные и их комбинации. | 750 В качестве значения можно использовать текст, переменные и их комбинации. |
704 Директивы наследуются с предыдущего уровня при условии, что на данном | 751 Директивы наследуются с предыдущего уровня при условии, что на данном |
705 уровне не описаны свои директивы proxy_set_header. | 752 уровне не описаны свои директивы <literal>proxy_set_header</literal>. |
706 По умолчанию переопределяются только две строки: | 753 По умолчанию переопределяются только два поля: |
707 <example> | 754 <example> |
708 proxy_set_header Host $proxy_host; | 755 proxy_set_header Host $proxy_host; |
709 proxy_set_header Connection close; | 756 proxy_set_header Connection close; |
710 </example> | 757 </example> |
711 </para> | 758 </para> |
712 | 759 |
713 <para> | 760 <para> |
714 Неизменённую строку заголовка запроса "Host" можно передать так: | 761 Неизменённое поле заголовка запроса <header>Host</header> можно передать так: |
715 <example> | 762 <example> |
716 proxy_set_header Host $http_host; | 763 proxy_set_header Host $http_host; |
717 </example> | 764 </example> |
718 </para> | 765 </para> |
719 | 766 |
720 <para> | 767 <para> |
721 Однако, если эта строка отсутствует в запросе клиента, то ничего | 768 Однако, если это поле отсутствует в заголовке запроса клиента, то ничего |
722 передаваться не будет. В этом случае лучше воспользоваться переменной | 769 передаваться не будет. В этом случае лучше воспользоваться переменной |
723 $host, её значение равно имени сервера в строке заголовка запроса "Host" | 770 <var>$host</var> - её значение равно имени сервера в поле <header>Host</header> |
724 или же основному имени сервера, если строки нет: | 771 заголовка запроса, или же основному имени сервера, если поля нет: |
725 <example> | 772 <example> |
726 proxy_set_header Host $host; | 773 proxy_set_header Host $host; |
727 </example> | 774 </example> |
728 </para> | 775 </para> |
729 | 776 |
730 <para> | 777 <para> |
731 Кроме того, можно передать имя сервера вместе с портом проксируемого сервера: | 778 Кроме того, можно передать имя сервера вместе с портом проксируемого сервера: |
732 <example> | 779 <example> |
733 proxy_set_header Host $host:$proxy_port; | 780 proxy_set_header Host $host:$proxy_port; |
734 </example> | 781 </example> |
735 </para> | 782 </para> |
736 | 783 |
737 <para> | 784 <para> |
738 Если значение строки заголовка — пустая строка, то строка вообще | 785 Если значение поля заголовка — пустая строка, то поле вообще |
739 не будет передаваться проксируемому серверу: | 786 не будет передаваться проксируемому серверу: |
740 <example> | 787 <example> |
741 proxy_set_header Accept-Encoding ""; | 788 proxy_set_header Accept-Encoding ""; |
742 </example> | 789 </example> |
743 </para> | 790 </para> |
744 | 791 |
745 </directive> | 792 </directive> |
746 | 793 |
747 | 794 |
748 <directive name="proxy_ssl_session_reuse"> | 795 <directive name="proxy_ssl_session_reuse"> |
749 <syntax><literal>on</literal> | <literal>off</literal></syntax> | 796 <syntax><literal>on</literal> | <literal>off</literal></syntax> |
750 <default>on</default> | 797 <default>on</default> |
751 <context>http, server, location</context> | 798 <context>http</context> |
752 | 799 <context>server</context> |
753 <para> | 800 <context>location</context> |
754 Директива определяет, использовать ли повторно SSL-сессии при | 801 |
802 <para> | |
803 Определяет, использовать ли повторно SSL-сессии при | |
755 работе с проксированным сервером. Если в логах появляются ошибки | 804 работе с проксированным сервером. Если в логах появляются ошибки |
756 "SSL3_GET_FINISHED:digest check failed", то можно попробовать выключить | 805 “<literal>SSL3_GET_FINISHED:digest check failed</literal>”, |
806 то можно попробовать выключить | |
757 повторное использование сессий. | 807 повторное использование сессий. |
758 </para> | 808 </para> |
759 | 809 |
760 </directive> | 810 </directive> |
761 | 811 |
762 | 812 |
763 <directive name="proxy_store"> | 813 <directive name="proxy_store"> |
764 <syntax><literal>on</literal> | <literal>off</literal> | <value>строка</value></syntax> | 814 <syntax> |
815 <literal>on</literal> | | |
816 <literal>off</literal> | | |
817 <value>строка</value></syntax> | |
765 <default>off</default> | 818 <default>off</default> |
766 <context>http, server, location</context> | 819 <context>http</context> |
767 | 820 <context>server</context> |
768 <para> | 821 <context>location</context> |
769 Директива разрешает сохранение на диск файлов. | 822 |
770 Параметр "on" сохраняет файлы в соответствии с путями, указаными в директивах | 823 <para> |
824 Разрешает сохранение на диск файлов. | |
825 Параметр <literal>on</literal> сохраняет файлы в соответствии с путями, | |
826 указанными в директивах | |
771 <link doc="ngx_http_core_module.xml" id="alias"/> или | 827 <link doc="ngx_http_core_module.xml" id="alias"/> или |
772 <link doc="ngx_http_core_module.xml" id="root"/>. | 828 <link doc="ngx_http_core_module.xml" id="root"/>. |
773 Параметр "off" запрещает сохранение файлов. | 829 Параметр <literal>off</literal> запрещает сохранение файлов. |
774 Кроме того, имя файла можно явно задать с помощью строки с переменными: | 830 Кроме того, имя файла можно задать явно с помощью строки с переменными: |
775 <example> | 831 <example> |
776 proxy_store /data/www$original_uri; | 832 proxy_store /data/www$original_uri; |
777 </example> | 833 </example> |
778 </para> | 834 </para> |
779 | 835 |
780 <para> | 836 <para> |
781 Время модификации файлов выставляется согласно полученной строке | 837 Время изменения файлов выставляется согласно полученному полю |
782 "Last-Modified" в заголовке ответа. | 838 <header>Last-Modified</header> в заголовке ответа. |
783 Ответ записывается во временный файл, а потом этот файл переименовывается. | 839 Ответ записывается во временный файл, а потом этот файл переименовывается. |
784 Начиная с версии 0.8.9, временный файл и постоянное место хранения ответа | 840 Начиная с версии 0.8.9, временный файл и постоянное место хранения ответа |
785 могут располагаться на разных файловых системах, но нужно учитывать, | 841 могут располагаться на разных файловых системах, но нужно учитывать, |
786 что в этом случае вместо дешёвой операции переименовывания в пределах | 842 что в этом случае вместо дешёвой операции переименовывания в пределах |
787 одной файловой системы файл копируется с одной файловой системы на другую. | 843 одной файловой системы файл копируется с одной файловой системы на другую. |
793 <para> | 849 <para> |
794 Директиву можно использовать для создания локальных копий статических | 850 Директиву можно использовать для создания локальных копий статических |
795 неизменяемых файлов, например, так: | 851 неизменяемых файлов, например, так: |
796 <example> | 852 <example> |
797 location /images/ { | 853 location /images/ { |
798 root /data/www; | 854 root /data/www; |
799 open_file_cache_errors off; | 855 open_file_cache_errors off; |
800 error_page 404 = /fetch$uri; | 856 error_page 404 = /fetch$uri; |
801 } | 857 } |
802 | 858 |
803 location /fetch/ { | 859 location /fetch/ { |
804 internal; | 860 internal; |
805 | 861 |
806 proxy_pass http://backend/; | 862 proxy_pass http://backend/; |
807 proxy_store on; | 863 proxy_store on; |
808 proxy_store_access user:rw group:rw all:r; | 864 proxy_store_access user:rw group:rw all:r; |
809 proxy_temp_path /data/temp; | 865 proxy_temp_path /data/temp; |
810 | 866 |
811 alias /data/www/; | 867 alias /data/www/; |
812 } | 868 } |
813 </example> | 869 </example> |
814 </para> | 870 </para> |
815 | 871 |
816 <para> | 872 <para> |
817 или так: | 873 или так: |
818 <example> | 874 <example> |
819 location /images/ { | 875 location /images/ { |
820 root /data/www; | 876 root /data/www; |
821 error_page 404 = @fetch; | 877 error_page 404 = @fetch; |
822 } | 878 } |
823 | 879 |
824 location @fetch { | 880 location @fetch { |
825 internal; | 881 internal; |
826 | 882 |
827 proxy_pass http://backend; | 883 proxy_pass http://backend; |
828 proxy_store on; | 884 proxy_store on; |
829 proxy_store_access user:rw group:rw all:r; | 885 proxy_store_access user:rw group:rw all:r; |
830 proxy_temp_path /data/temp; | 886 proxy_temp_path /data/temp; |
831 | 887 |
832 root /data/www; | 888 root /data/www; |
833 } | 889 } |
834 </example> | 890 </example> |
835 </para> | 891 </para> |
836 | 892 |
837 </directive> | 893 </directive> |
838 | 894 |
839 | 895 |
840 <directive name="proxy_store_access"> | 896 <directive name="proxy_store_access"> |
841 <syntax><value>пользователи</value>:<value>права</value> ...</syntax> | 897 <syntax><value>пользователи</value>:<value>права</value> ...</syntax> |
842 <default>user:rw</default> | 898 <default>user:rw</default> |
843 <context>http, server, location</context> | 899 <context>http</context> |
844 | 900 <context>server</context> |
845 <para> | 901 <context>location</context> |
846 Директива задаёт права доступа для создаваемых файлов и каталогов, например, | 902 |
847 <example> | 903 <para> |
848 proxy_store_access user:rw group:rw all:r; | 904 Задаёт права доступа для создаваемых файлов и каталогов, например, |
849 </example> | 905 <example> |
850 </para> | 906 proxy_store_access user:rw group:rw all:r; |
851 | 907 </example> |
852 <para> | 908 </para> |
853 Если заданы какие-либо права для groups или all, то права для user | 909 |
910 <para> | |
911 Если заданы какие-либо права для <literal>group</literal> или | |
912 <literal>all</literal>, то права для <literal>user</literal> | |
854 указывать необязательно: | 913 указывать необязательно: |
855 <example> | 914 <example> |
856 proxy_store_access group:rw all:r; | 915 proxy_store_access group:rw all:r; |
857 </example> | 916 </example> |
858 </para> | 917 </para> |
859 | 918 |
860 </directive> | 919 </directive> |
861 | 920 |
862 | 921 |
863 <directive name="proxy_temp_path"> | 922 <directive name="proxy_temp_path"> |
864 <syntax><value>путь</value> [<value>уровень1</value> [<value>уровень2</value> [<value>уровень3</value>]]]</syntax> | 923 <syntax> |
924 <value>путь</value> | |
925 [<value>уровень1</value> | |
926 [<value>уровень2</value> | |
927 [<value>уровень3</value>]]]</syntax> | |
865 <default>proxy_temp</default> | 928 <default>proxy_temp</default> |
866 <context>http, server, location</context> | 929 <context>http</context> |
867 | 930 <context>server</context> |
868 <para> | 931 <context>location</context> |
869 Директива задаёт имя каталога для хранения временных файлов | 932 |
933 <para> | |
934 Задаёт имя каталога для хранения временных файлов, | |
870 полученных от другого сервера. | 935 полученных от другого сервера. |
871 В каталоге может использоваться иерархия подкаталогов до трёх уровней. | 936 В каталоге может использоваться иерархия подкаталогов до трёх уровней. |
872 Например, при такой конфигурации | 937 Например, при такой конфигурации |
873 <example> | 938 <example> |
874 proxy_temp_path /spool/nginx/proxy_temp 1 2; | 939 proxy_temp_path /spool/nginx/proxy_temp 1 2; |
875 </example> | 940 </example> |
876 имя временного будет такого вида: | 941 временный файл будет следующего вида: |
877 <example> | 942 <example> |
878 /spool/nginx/proxy_temp/7/45/00000123457 | 943 /spool/nginx/proxy_temp/7/45/00000123457 |
879 </example> | 944 </example> |
880 </para> | 945 </para> |
881 | 946 |
882 </directive> | 947 </directive> |
883 | 948 |
884 </section> | 949 </section> |
885 | 950 |
886 | 951 |
887 <section name="Встроенные переменные" id="variables"> | 952 <section id="variables" name="Встроенные переменные"> |
888 | 953 |
889 <para> | 954 <para> |
890 В модуле ngx_http_proxy_module есть встроенные переменные, | 955 В модуле <literal>ngx_http_proxy_module</literal> есть встроенные переменные, |
891 которые можно использовать для формирования заголовков с помощью директивы | 956 которые можно использовать для формирования заголовков с помощью директивы |
892 <link id="proxy_set_header"/>: | 957 <link id="proxy_set_header"/>: |
893 <list type="bullet"> | 958 <list type="tag"> |
894 | 959 |
895 <listitem> | 960 <tag-name><var>$proxy_host</var></tag-name> |
896 $proxy_host, эта переменная равна имени проксируемого хоста и порта; | 961 <tag-desc>имя проксируемого хоста и порт;</tag-desc> |
897 </listitem> | 962 |
898 | 963 <tag-name><var>$proxy_port</var></tag-name> |
899 <listitem> | 964 <tag-desc>порт проксируемого хоста;</tag-desc> |
900 $proxy_port, эта переменная равна порту проксируемого хоста; | 965 |
901 </listitem> | 966 <tag-name><var>$proxy_add_x_forwarded_for</var></tag-name> |
902 | 967 <tag-desc>поле заголовка запроса клиента <header>X-Forwarded-For</header> |
903 <listitem> | 968 и добавленная к нему через запятую переменная <var>$remote_addr</var>. |
904 $proxy_add_x_forwarded_for, эта переменная равна строке заголовка запроса | 969 Если же поля <header>X-Forwarded-For</header> в заголовке запроса клиента нет, |
905 клиента "X-Forwarded-For" и добавленной к ней через запятую переменной | 970 то переменная <var>$proxy_add_x_forwarded_for</var> |
906 $remote_addr. Если же строки "X-Forwarded-For" в запросе клиента нет, | 971 равна переменной <var>$remote_addr</var>.</tag-desc> |
907 то переменная $proxy_add_x_forwarded_for равна переменной $remote_addr. | |
908 </listitem> | |
909 | |
910 </list> | 972 </list> |
911 </para> | 973 </para> |
912 | 974 |
913 </section> | 975 </section> |
914 | 976 |