Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nginx
GitHub Repository: nginx/nginx.org
Path: blob/main/xml/ru/docs/http/ngx_http_memcached_module.xml
1 views
1
<?xml version="1.0"?>
2
3
<!--
4
Copyright (C) Igor Sysoev
5
Copyright (C) Nginx, Inc.
6
-->
7
8
<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
9
10
<module name="Модуль ngx_http_memcached_module"
11
link="/ru/docs/http/ngx_http_memcached_module.html"
12
lang="ru"
13
rev="19">
14
15
<section id="summary">
16
17
<para>
18
Модуль <literal>ngx_http_memcached_module</literal> позволяет получать
19
ответ из сервера memcached.
20
Ключ задаётся в переменной <var>$memcached_key</var>.
21
Ответ в memcached должен быть предварительно помещён внешним по отношению
22
к nginx’у способом.
23
</para>
24
25
</section>
26
27
28
<section id="example" name="Пример конфигурации">
29
30
<para>
31
<example>
32
server {
33
location / {
34
set $memcached_key "$uri?$args";
35
memcached_pass host:11211;
36
error_page 404 502 504 = @fallback;
37
}
38
39
location @fallback {
40
proxy_pass http://backend;
41
}
42
}
43
</example>
44
</para>
45
46
</section>
47
48
49
<section id="directives" name="Директивы">
50
51
<directive name="memcached_allow_upstream">
52
<syntax><value>строка</value> ...</syntax>
53
<default/>
54
<context>http</context>
55
<context>server</context>
56
<context>location</context>
57
<appeared-in>1.29.3</appeared-in>
58
59
<para>
60
Задаёт условия, при которых доступ к серверу memcached
61
будет разрешён или <link id="denied">запрещён</link>.
62
Если все значения строковых параметров непустые
63
и не равны “0”, то доступ разрешён.
64
Условия проверяются каждый раз
65
перед установлением соединения с сервером memcached.
66
В значении параметров допустимо использование переменных:
67
<example>
68
geo $upstream_last_addr $allow {
69
volatile;
70
10.10.0.0/24 1;
71
}
72
73
server {
74
listen 127.0.0.1:8080;
75
76
location / {
77
memcached_pass host:11211;
78
memcached_allow_upstream $allow;
79
...
80
}
81
}
82
</example>
83
</para>
84
85
<para>
86
<note>
87
Директива доступна как часть
88
<commercial_version>коммерческой подписки</commercial_version>.
89
</note>
90
</para>
91
92
</directive>
93
94
95
<directive name="memcached_bind">
96
<syntax>
97
<value>адрес</value>
98
[<literal>transparent </literal>] |
99
<literal>off</literal></syntax>
100
<default/>
101
<context>http</context>
102
<context>server</context>
103
<context>location</context>
104
<appeared-in>0.8.22</appeared-in>
105
106
<para>
107
Задаёт локальный IP-адрес с необязательным портом (1.11.2),
108
который будет использоваться в исходящих соединениях с сервером memcached.
109
В значении параметра допустимо использование переменных (1.3.12).
110
Специальное значение <literal>off</literal> (1.3.12) отменяет действие
111
унаследованной с предыдущего уровня конфигурации
112
директивы <literal>memcached_bind</literal>, позволяя системе
113
самостоятельно выбирать локальный IP-адрес и порт.
114
</para>
115
116
<para id="memcached_bind_transparent">
117
Параметр <literal>transparent</literal> (1.11.0) позволяет
118
задать нелокальный IP-aдрес, который будет использоваться в
119
исходящих соединениях с сервером memcached,
120
например, реальный IP-адрес клиента:
121
<example>
122
memcached_bind $remote_addr transparent;
123
</example>
124
Для работы параметра
125
обычно требуется
126
запустить рабочие процессы nginx с привилегиями
127
<link doc="../ngx_core_module.xml" id="user">суперпользователя</link>.
128
В Linux этого не требуется (1.13.8), так как если
129
указан параметр <literal>transparent</literal>, то рабочие процессы
130
наследуют capability <literal>CAP_NET_RAW</literal> из главного процесса.
131
Также необходимо настроить таблицу маршрутизации ядра
132
для перехвата сетевого трафика с сервера memcached.
133
</para>
134
135
</directive>
136
137
138
<directive name="memcached_bind_dynamic">
139
<syntax><literal>on</literal> | <literal>off</literal></syntax>
140
<default>off</default>
141
<context>http</context>
142
<context>server</context>
143
<context>location</context>
144
<appeared-in>1.29.3</appeared-in>
145
146
<para>
147
Если включено, операция <link id="memcached_bind">bind</link> осуществляется
148
при каждой попытке соединения.
149
</para>
150
151
<para>
152
<note>
153
Директива доступна как часть
154
<commercial_version>коммерческой подписки</commercial_version>.
155
</note>
156
</para>
157
158
</directive>
159
160
161
<directive name="memcached_buffer_size">
162
<syntax><value>размер</value></syntax>
163
<default>4k|8k</default>
164
<context>http</context>
165
<context>server</context>
166
<context>location</context>
167
168
<para>
169
Задаёт <value>размер</value> буфера, в который будет читаться ответ,
170
получаемый от сервера memcached.
171
Ответ синхронно передаётся клиенту сразу же по мере его поступления.
172
</para>
173
174
</directive>
175
176
177
<directive name="memcached_connect_timeout">
178
<syntax><value>время</value></syntax>
179
<default>60s</default>
180
<context>http</context>
181
<context>server</context>
182
<context>location</context>
183
184
<para>
185
Задаёт таймаут для установления соединения с сервером memcached.
186
Необходимо иметь в виду, что этот таймаут обычно не может превышать 75 секунд.
187
</para>
188
189
</directive>
190
191
192
<directive name="memcached_gzip_flag">
193
<syntax><value>флаг</value></syntax>
194
<default></default>
195
<context>http</context>
196
<context>server</context>
197
<context>location</context>
198
<appeared-in>1.3.6</appeared-in>
199
200
<para>
201
Включает проверку указанного <value>флага</value> в ответе
202
сервера memcached и установку поля “<literal>Content-Encoding</literal>
203
заголовка ответа в “<literal>gzip</literal>”, если этот флаг установлен.
204
</para>
205
206
</directive>
207
208
209
<directive name="memcached_next_upstream">
210
<syntax>
211
<literal>error</literal> |
212
<literal>timeout</literal> |
213
<literal>denied</literal> |
214
<literal>invalid_response</literal> |
215
<literal>not_found</literal> |
216
<literal>off</literal>
217
...</syntax>
218
<default>error timeout</default>
219
<context>http</context>
220
<context>server</context>
221
<context>location</context>
222
223
<para>
224
Определяет, в каких случаях запрос будет передан следующему серверу:
225
<list type="tag">
226
227
<tag-name><literal>error</literal></tag-name>
228
<tag-desc>произошла ошибка соединения с сервером, передачи ему запроса или
229
чтения заголовка ответа сервера;</tag-desc>
230
231
<tag-name><literal>timeout</literal></tag-name>
232
<tag-desc>произошёл таймаут во время соединения с сервером,
233
передачи ему запроса или чтения заголовка ответа сервера;</tag-desc>
234
235
<tag-name id="denied"><literal>denied</literal></tag-name>
236
<tag-desc>сервер <link id="proxy_allow_upstream">отклонил</link>
237
соединение (1.29.3);
238
<para>
239
<note>
240
Параметр доступен как часть
241
<commercial_version>коммерческой подписки</commercial_version>.
242
</note>
243
</para>
244
</tag-desc>
245
246
<tag-name><literal>invalid_response</literal></tag-name>
247
<tag-desc>сервер вернул пустой или неверный ответ;</tag-desc>
248
249
<tag-name><literal>not_found</literal></tag-name>
250
<tag-desc>сервер не нашёл ответ;</tag-desc>
251
252
<tag-name><literal>off</literal></tag-name>
253
<tag-desc>запрещает передачу запроса следующему серверу.</tag-desc>
254
255
</list>
256
</para>
257
258
<para>
259
Необходимо понимать, что передача запроса следующему серверу возможна
260
только при условии, что клиенту ещё ничего не передавалось.
261
То есть, если ошибка или таймаут возникли в середине передачи ответа,
262
то исправить это уже невозможно.
263
</para>
264
265
<para>
266
Директива также определяет, что считается
267
<link doc="ngx_http_upstream_module.xml" id="max_fails">неудачной
268
попыткой</link> работы с сервером.
269
Случаи <literal>error</literal>, <literal>timeout</literal>,
270
<literal>denied</literal> и
271
<literal>invalid_response</literal>
272
всегда считаются неудачными попытками, даже если они не указаны в директиве.
273
Случай <literal>not_found</literal>
274
никогда не считается неудачной попыткой.
275
</para>
276
277
<para>
278
Передача запроса следующему серверу может быть ограничена по
279
<link id="memcached_next_upstream_tries">количеству попыток</link>
280
и по <link id="memcached_next_upstream_timeout">времени</link>.
281
</para>
282
283
</directive>
284
285
286
<directive name="memcached_next_upstream_timeout">
287
<syntax><value>время</value></syntax>
288
<default>0</default>
289
<context>http</context>
290
<context>server</context>
291
<context>location</context>
292
<appeared-in>1.7.5</appeared-in>
293
294
<para>
295
Ограничивает время, в течение которого возможна передача запроса
296
<link id="memcached_next_upstream">следующему серверу</link>.
297
Значение <literal>0</literal> отключает это ограничение.
298
</para>
299
300
</directive>
301
302
303
<directive name="memcached_next_upstream_tries">
304
<syntax><value>число</value></syntax>
305
<default>0</default>
306
<context>http</context>
307
<context>server</context>
308
<context>location</context>
309
<appeared-in>1.7.5</appeared-in>
310
311
<para>
312
Ограничивает число допустимых попыток для передачи запроса
313
<link id="memcached_next_upstream">следующему серверу</link>.
314
Значение <literal>0</literal> отключает это ограничение.
315
</para>
316
317
</directive>
318
319
320
<directive name="memcached_pass">
321
<syntax><value>адрес</value></syntax>
322
<default/>
323
<context>location</context>
324
<context>if в location</context>
325
326
<para>
327
Задаёт адрес сервера memcached.
328
Адрес может быть указан в виде доменного имени или IP-адреса,
329
и порта:
330
<example>
331
memcached_pass localhost:11211;
332
</example>
333
или в виде пути UNIX-сокета:
334
<example>
335
memcached_pass unix:/tmp/memcached.socket;
336
</example>
337
</para>
338
339
<para>
340
Если доменному имени соответствует несколько адресов, то все они будут
341
использоваться по очереди (round-robin).
342
И, кроме того, адрес может быть
343
<link doc="ngx_http_upstream_module.xml">группой серверов</link>.
344
</para>
345
346
</directive>
347
348
349
<directive name="memcached_read_timeout">
350
<syntax><value>время</value></syntax>
351
<default>60s</default>
352
<context>http</context>
353
<context>server</context>
354
<context>location</context>
355
356
<para>
357
Задаёт таймаут при чтении ответа сервера memcached.
358
Таймаут устанавливается не на всю передачу ответа,
359
а только между двумя операциями чтения.
360
Если по истечении этого времени сервер memcached ничего не передаст,
361
соединение закрывается.
362
</para>
363
364
</directive>
365
366
367
<directive name="memcached_send_timeout">
368
<syntax><value>время</value></syntax>
369
<default>60s</default>
370
<context>http</context>
371
<context>server</context>
372
<context>location</context>
373
374
<para>
375
Задаёт таймаут при передаче запроса серверу memcached.
376
Таймаут устанавливается не на всю передачу запроса,
377
а только между двумя операциями записи.
378
Если по истечении этого времени сервер memcached не примет новых данных,
379
соединение закрывается.
380
</para>
381
382
</directive>
383
384
385
<directive name="memcached_socket_keepalive">
386
<syntax><literal>on</literal> | <literal>off</literal></syntax>
387
<default>off</default>
388
<context>http</context>
389
<context>server</context>
390
<context>location</context>
391
<appeared-in>1.15.6</appeared-in>
392
393
<para>
394
Конфигурирует поведение “TCP keepalive”
395
для исходящих соединений к серверу memcached.
396
По умолчанию для сокета действуют настройки операционной системы.
397
Если указано значение “<literal>on</literal>”, то
398
для сокета включается параметр <c-def>SO_KEEPALIVE</c-def>.
399
</para>
400
401
</directive>
402
403
</section>
404
405
406
<section id="variables" name="Встроенные переменные">
407
408
<para>
409
<list type="tag">
410
411
<tag-name id="var_memcached_key"><var>$memcached_key</var></tag-name>
412
<tag-desc>
413
Задаёт ключ для получения ответа из сервера memcached.
414
</tag-desc>
415
416
</list>
417
</para>
418
419
</section>
420
421
</module>
422
423