Spec-Zone.ru › nginx

Модуль 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API