Memcached#

Позволяет получать ответ из сервера memcached. Ключ задается в переменной $memcached_key. Ответ в memcached должен быть предварительно помещен внешним по отношению к Angie способом.

Пример конфигурации#

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#

Синтаксис

memcached_bind адрес [transparent] | off;

По умолчанию

Контекст

http, server, location

Задает локальный IP-адрес с необязательным портом, который будет использоваться в исходящих соединениях с сервером memcached. В значении параметра допустимо использование переменных. Специальное значение off отменяет действие унаследованной с предыдущего уровня конфигурации директивы memcached_bind, позволяя системе самостоятельно выбирать локальный IP-адрес и порт.

Параметр transparent позволяет задать нелокальный IP-aдрес, который будет использоваться в исходящих соединениях с проксируемым сервером, например, реальный IP-адрес клиента:

memcached_bind $remote_addr transparent;

Для работы параметра обычно требуется запустить рабочие процессы Angie с привилегиями суперпользователя. В Linux это не требуется, так как если указан параметр transparent, то рабочие процессы наследуют capability CAP_NET_RAW из главного процесса.

Важно

Необходимо настроить таблицу маршрутизации ядра для перехвата сетевого трафика с серверa memcached.

memcached_buffer_size#

Синтаксис

memcached_buffer_size размер;

По умолчанию

memcached_buffer_size 4k|8k;

Контекст

http, server, location

Задает размер буфера, в который будет читаться первая часть ответа, получаемого от сервера memcached. Ответ синхронно передается клиенту сразу же по мере его поступления.

memcached_connect_timeout#

Синтаксис

memcached_connect_timeout время;

По умолчанию

memcached_connect_timeout 60s;

Контекст

http, server, location

Задает таймаут для установления соединения с сервером memcached. Необходимо иметь в виду, что этот таймаут обычно не может превышать 75 секунд.

memcached_gzip_flag#

Синтаксис

memcached_gzip_flag флаг;

По умолчанию

Контекст

http, server, location

Включает проверку указанного флага в ответе сервера memcached и установку поля "Content-Encoding" заголовка ответа в "gzip", если этот флаг установлен.

memcached_next_upstream#

Синтаксис

memcached_next_upstream error | timeout | invalid_response | not_found | off ...;

По умолчанию

memcached_next_upstream error timeout;

Контекст

http, server, location

Определяет, в каких случаях запрос будет передан следующему в группе upstream серверу:

error

произошла ошибка соединения с сервером, передачи ему запроса или чтения заголовка ответа сервера;

timeout

произошел таймаут во время соединения с сервером, передачи ему запроса или чтения заголовка ответа сервера;

invalid_response

сервер вернул пустой или неверный ответ;

not_found

сервер не нашел ответ;

off

запрещает передачу запроса следующему серверу.

Примечание

Необходимо понимать, что передача запроса следующему серверу возможна только при условии, что клиенту еще ничего не передавалось. То есть, если ошибка или таймаут возникли в середине передачи ответа клиенту, то действие директивы на такой запрос не распространяется.

Директива также определяет, что считается неудачной попыткой работы с сервером.

error
timeout
invalid_response

всегда считаются неудачными попытками, даже если они не указаны в директиве

not_found

никогда не считается неудачными попытками

Передача запроса следующему серверу может быть ограничена по количеству попыток и по времени.

memcached_next_upstream_timeout#

Синтаксис

memcached_next_upstream_timeout время;

По умолчанию

memcached_next_upstream_timeout 0;

Контекст

http, server, location

Ограничивает время, в течение которого возможна передача запроса следующему серверу.

0

отключает это ограничение

memcached_next_upstream_tries#

Синтаксис

memcached_next_upstream_tries число;

По умолчанию

memcached_next_upstream_tries 0;

Контекст

http, server, location

Ограничивает число допустимых попыток для передачи запроса следующему серверу.

0

отключает это ограничение

memcached_pass#

Синтаксис

memcached_pass адрес;

По умолчанию

Контекст

location, if в location

Задает адрес сервера memcached. Адрес может быть указан в виде доменного имени или IP-адреса, и порта:

memcached_pass localhost:11211;

или в виде пути UNIX-сокета:

memcached_pass unix:/tmp/memcached.socket;

Если доменному имени соответствует несколько адресов, то все они будут использоваться по очереди (round-robin). Кроме того, в качестве адреса можно указать группу серверов.

memcached_read_timeout#

Синтаксис

memcached_read_timeout время;

По умолчанию

memcached_read_timeout 60s;

Контекст

http, server, location

Задает таймаут при чтении ответа сервера memcached. Таймаут устанавливается не на всю передачу ответа, а только между двумя операциями чтения. Если по истечении этого времени сервер memcached ничего не передаст, соединение закрывается.

memcached_send_timeout#

Синтаксис

memcached_send_timeout время;

По умолчанию

memcached_send_timeout 60s;

Контекст

http, server, location

Задает таймаут при передаче запроса серверу memcached. Таймаут устанавливается не на всю передачу запроса, а только между двумя операциями записи. Если по истечении этого времени сервер memcached не примет новых данных, соединение закрывается.

memcached_socket_keepalive#

Синтаксис

memcached_socket_keepalive on | off;

По умолчанию

memcached_socket_keepalive off;

Контекст

http, server, location

Конфигурирует поведение "TCP keepalive" для исходящих соединений к проксируемому серверу.

""

По умолчанию для сокета действуют настройки операционной системы.

on

для сокета включается параметр SO_KEEPALIVE

Встроенные переменные#

$memcached_key#

Задает ключ для получения ответа из сервера memcached.