Модуль http_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 серверу:
|
произошла ошибка соединения с сервером, передачи ему запроса или чтения заголовка ответа сервера; |
|
произошёл таймаут во время соединения с сервером, передачи ему запроса или чтения заголовка ответа сервера; |
|
сервер вернул пустой или неверный ответ; |
|
сервер не нашёл ответ; |
|
запрещает передачу запроса следующему серверу. |
Примечание
Необходимо понимать, что передача запроса следующему серверу возможна только при условии, что клиенту ещё ничего не передавалось. То есть, если ошибка или таймаут возникли в середине передачи ответа клиенту, то действие директивы на такой запрос не распространяется.
Директива также определяет, что считается неудачной попыткой работы с сервером.
|
всегда считаются неудачными попытками, даже если они не указаны в директиве |
|
никогда не считается неудачными попытками |
Передача запроса следующему серверу может быть ограничена по количеству попыток и по времени.
memcached_next_upstream_timeout#
- Синтаксис:
memcached_next_upstream_timeout
время;- Умолчание:
memcached_next_upstream_timeout 0;
- Контекст:
http, server, location
Ограничивает время, в течение которого возможна передача запроса следующему серверу.
|
отключает это ограничение |
memcached_next_upstream_tries#
- Синтаксис:
memcached_next_upstream_tries
число;- Умолчание:
memcached_next_upstream_tries 0;
- Контекст:
http, server, location
Ограничивает число допустимых попыток для передачи запроса следующему серверу.
|
отключает это ограничение |
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” для исходящих соединений к проксируемому серверу.
|
По умолчанию для сокета действуют настройки операционной системы. |
|
для сокета включается параметр SO_KEEPALIVE |
Встроенные переменные#
$memcached_key
#
Задаёт ключ для получения ответа из сервера memcached.