Spec-Zone.ru › nginx

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

Spec-Zone.ru

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