Модуль ngx_http_memcached_module
- Пример конфигурации
- Директивы
- memcached_allow_upstream
- memcached_bind
- memcached_bind_dynamic
- memcached_buffer_size
- memcached_connect_timeout
- memcached_gzip_flag
- memcached_next_upstream
- memcached_next_upstream_timeout
- memcached_next_upstream_tries
- memcached_pass
- memcached_read_timeout
- memcached_send_timeout
- memcached_socket_keepalive
- Встроенные переменные
Модуль ngx_http_memcached_module используется для получения ответов от сервера memcached. Ключ задаётся в переменной $memcached_key. Ответ должен быть заранее помещён в memcached средствами, не связанными с nginx.
Пример конфигурации
server {
location / {
set $memcached_key "$uri?$args";
memcached_pass host:11211;
error_page 404 502 504 = @fallback;
}
location @fallback {
proxy_pass http://backend;
}
}
Директивы
| Синтаксис: | memcached_allow_upstream string ...; |
|---|---|
| По умолчанию: | — |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.29.3.
Задаёт условия, при которых доступ к серверу memcached разрешён или запрещён. Если все строковые параметры не пусты и не равны «0», доступ разрешён. Условия проверяются каждый раз перед установлением соединения с сервером memcached. Значения параметров могут содержать переменные:
geo $upstream_last_addr $allow {
volatile;
10.10.0.0/24 1;
}
server {
listen 127.0.0.1:8080;
location / {
memcached_pass host:11211;
memcached_allow_upstream $allow;
...
}
}
Эта директива доступна в рамках нашей коммерческой подписки.
| Синтаксис: | memcached_bind
address
[transparent ] |
off; |
|---|---|
| По умолчанию: | — |
| Контекст: | http, server, location |
Эта директива появилась в версии 0.8.22.
Заставляет устанавливать исходящие соединения с сервером memcached с указанного локального IP-адреса и, при необходимости, порта (1.11.2). Значение параметра может содержать переменные (1.3.12). Специальное значение off (1.3.12) отменяет действие директивы memcached_bind, унаследованной с предыдущего уровня конфигурации, что позволяет системе автоматически назначить локальные IP-адрес и порт.
Параметр transparent (1.11.0) позволяет устанавливать исходящие соединения с сервером memcached с нелокального IP-адреса, например с реального IP-адреса клиента:
memcached_bind $remote_addr transparent;
Для работы этого параметра обычно требуется запускать рабочие процессы nginx с привилегиями суперпользователя. В Linux это не требуется (1.13.8), поскольку при указании параметра transparent рабочие процессы наследуют возможность CAP_NET_RAW от главного процесса. Также необходимо настроить таблицу маршрутизации ядра, чтобы перехватывать сетевой трафик от сервера memcached.
| Синтаксис: | memcached_bind_dynamic on | off; |
|---|---|
| По умолчанию: | memcached_bind_dynamic off; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.29.3.
Если директива включена, операция bind выполняется при каждой попытке соединения.
Эта директива доступна в рамках нашей коммерческой подписки.
| Синтаксис: | memcached_buffer_size size; |
|---|---|
| По умолчанию: | memcached_buffer_size 4k|8k; |
| Контекст: | http, server, location |
Задаёт size буфера, используемого для чтения ответа, полученного от сервера memcached. Ответ передаётся клиенту синхронно, сразу после получения.
| Синтаксис: | memcached_connect_timeout time; |
|---|---|
| По умолчанию: | memcached_connect_timeout 60s; |
| Контекст: | http, server, location |
Задаёт тайм-аут установления соединения с сервером memcached. Следует учитывать, что обычно этот тайм-аут не может превышать 75 секунд.
| Синтаксис: | memcached_gzip_flag flag; |
|---|---|
| По умолчанию: | — |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.3.6.
Включает проверку наличия flag в ответе сервера memcached и задаёт для поля заголовка ответа «Content-Encoding» значение «gzip», если флаг установлен.
| Синтаксис: | memcached_next_upstream
error |
timeout |
denied |
invalid_response |
not_found |
off
...; |
|---|---|
| По умолчанию: | memcached_next_upstream error timeout; |
| Контекст: | http, server, location |
Указывает, в каких случаях запрос следует передавать следующему серверу:
error- при установлении соединения с сервером, передаче ему запроса или чтении заголовка ответа произошла ошибка;
timeout- при установлении соединения с сервером, передаче ему запроса или чтении заголовка ответа возник тайм-аут;
denied- сервер запретил соединение (1.29.3);
Этот параметр доступен в рамках нашей коммерческой подписки.
invalid_response- сервер вернул пустой или некорректный ответ;
not_found- ответ не найден на сервере;
off- отключает передачу запроса следующему серверу.
Следует учитывать, что передача запроса следующему серверу возможна, только если клиенту ещё ничего не было отправлено. То есть, если ошибка или тайм-аут возникли в середине передачи ответа, исправить ситуацию невозможно.
Директива также определяет, что считается неудачной попыткой связи с сервером. Случаи error, timeout, denied и invalid_response всегда считаются неудачными попытками, даже если они не указаны в директиве. Случай not_found никогда не считается неудачной попыткой.
Передача запроса следующему серверу может быть ограничена числом попыток и временем.
| Синтаксис: | memcached_next_upstream_timeout time; |
|---|---|
| По умолчанию: | memcached_next_upstream_timeout 0; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.7.5.
Ограничивает время, в течение которого запрос может передаваться следующему серверу. Значение 0 отключает это ограничение.
| Синтаксис: | memcached_next_upstream_tries number; |
|---|---|
| По умолчанию: | memcached_next_upstream_tries 0; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.7.5.
Ограничивает число возможных попыток передачи запроса следующему серверу. Значение 0 отключает это ограничение.
| Синтаксис: | memcached_pass address; |
|---|---|
| По умолчанию: | — |
| Контекст: | location, if in location |
Задаёт адрес сервера memcached. Адрес можно указать как доменное имя или IP-адрес с портом:
memcached_pass localhost:11211;
или как путь к UNIX-сокету:
memcached_pass unix:/tmp/memcached.socket;
Если доменное имя разрешается в несколько адресов, они будут использоваться по очереди. Кроме того, адрес можно указать как группу серверов.
| Синтаксис: | memcached_read_timeout time; |
|---|---|
| По умолчанию: | memcached_read_timeout 60s; |
| Контекст: | http, server, location |
Задаёт тайм-аут чтения ответа от сервера memcached. Тайм-аут устанавливается только между двумя последовательными операциями чтения, а не на передачу всего ответа целиком. Если сервер memcached не передаёт данные в течение этого времени, соединение закрывается.
| Синтаксис: | memcached_send_timeout time; |
|---|---|
| По умолчанию: | memcached_send_timeout 60s; |
| Контекст: | http, server, location |
Задаёт тайм-аут передачи запроса серверу memcached. Тайм-аут устанавливается только между двумя последовательными операциями записи, а не на передачу всего запроса целиком. Если сервер memcached не получает данные в течение этого времени, соединение закрывается.
| Синтаксис: | memcached_socket_keepalive on | off; |
|---|---|
| По умолчанию: | memcached_socket_keepalive off; |
| Контекст: | http, server, location |
Эта директива появилась в версии 1.15.6.
Настраивает поведение «TCP keepalive» для исходящих соединений с сервером memcached. По умолчанию для сокета используются настройки операционной системы. Если директиве задано значение «on», для сокета включается параметр SO_KEEPALIVE.
Встроенные переменные
$memcached_key- Задаёт ключ для получения ответа от сервера memcached.
© 2002-2021 Igor Sysoev
© 2011-2026 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/http/ngx_http_memcached_module.html