Модуль ngx_http_memcached_module
- Пример конфигурации
- Директивы
- memcached_bind
- 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 внешними средствами.
Пример конфигурации
server {
location / {
set $memcached_key "$uri?$args";
memcached_pass host:11211;
error_page 404 502 504 = @fallback;
}
location @fallback {
proxy_pass http://backend;
}
}
Директивы
| Синтаксис: | memcached_bind
address
[transparent ] |
off; |
|---|---|
| По умолчанию: | — |
| Контекст: | http, server, location |
Данная директива появилась в версии 0.8.22.
Принудительно устанавливает локальный IP-адрес и опциональный порт (1.11.2), с которого будут осуществляться исходящие соединения с сервером memcached. Значение параметра может содержать переменные (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_buffer_size size; |
|---|---|
| По умолчанию: | memcached_buffer_size 4k|8k; |
| Контекст: | http, server, location |
Устанавливает размер буфера, используемого для чтения ответа, полученного от сервера 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 |
invalid_response |
not_found |
off
...; |
|---|---|
| По умолчанию: | memcached_next_upstream error timeout; |
| Контекст: | http, server, location |
Указывает, в каких случаях запрос должен быть передан следующему серверу:
error- произошла ошибка при установлении соединения с сервером, передаче запроса или чтении заголовка ответа;
timeout- произошёл таймаут при установлении соединения с сервером, передаче запроса или чтении заголовка ответа;
invalid_response- сервер вернул пустой или некорректный ответ;
not_found- ответ не был найден на сервере;
off- отключает передачу запроса следующему серверу.
Следует учитывать, что передача запроса следующему серверу возможна только если ещё ничего не было отправлено клиенту. То есть, если ошибка или таймаут произойдут во время передачи ответа, исправить это невозможно.
Директива также определяет, что считается неудачной попыткой связи с сервером. Случаи error, timeout и 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-2024 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/http/ngx_http_memcached_module.html