Memcached#

O módulo é usado para obter respostas de um servidor memcached. A chave é definida na variável $memcached_key. Uma resposta deve ser colocada no memcached antecipadamente por meios externos ao Angie.

Exemplo de Configuração#

server {
    location / {
        set            $memcached_key "$uri?$args";
        memcached_pass host:11211;
        error_page     404 502 504 = @fallback;
    }

    location @fallback {
        proxy_pass     http://backend;
    }
}

Diretivas#

memcached_bind#

Sintaxe

memcached_bind address [transparent] | off;

Padrão

Contexto

http, server, location

Faz com que as conexões de saída para um servidor memcached se originem do endereço IP local especificado com uma porta opcional. O valor do parâmetro pode conter variáveis. O valor especial off cancela o efeito da diretiva memcached_bind herdada do nível de configuração anterior, o que permite ao sistema atribuir automaticamente o endereço IP local e a porta.

O parâmetro transparent permite que as conexões de saída para um servidor memcached se originem de um endereço IP não local, por exemplo, de um endereço IP real de um cliente:

memcached_bind $remote_addr transparent;

Para que este parâmetro funcione, geralmente é necessário executar os processos worker do Angie com privilégios de superusuário. No Linux isso não é necessário, pois se o parâmetro transparent for especificado, os processos worker herdam a capacidade CAP_NET_RAW do processo mestre.

Nota

É necessário configurar a tabela de roteamento do kernel para interceptar o tráfego de rede do servidor memcached.

memcached_buffer_size#

Sintaxe

memcached_buffer_size size;

Padrão

memcached_buffer_size 4k|8k;

Contexto

http, server, location

Define o tamanho do buffer usado para ler a primeira parte da resposta recebida do servidor memcached. A resposta é passada para o cliente de forma síncrona, assim que é recebida.

memcached_connect_timeout#

Sintaxe

memcached_connect_timeout time;

Padrão

memcached_connect_timeout 60s;

Contexto

http, server, location

Define um timeout para estabelecer uma conexão com um servidor memcached. Deve-se notar que este timeout geralmente não pode exceder 75 segundos.

memcached_gzip_flag#

Sintaxe

memcached_gzip_flag flag;

Padrão

Contexto

http, server, location

Habilita o teste para a presença da flag na resposta do servidor memcached e define o campo de cabeçalho de resposta Content-Encoding como "gzip" se a flag estiver definida.

memcached_next_upstream#

Sintaxe

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

Padrão

memcached_next_upstream error timeout;

Contexto

http, server, location

Especifica em quais casos uma requisição deve ser passada para o próximo servidor no pool upstream:

error

ocorreu um erro ao estabelecer uma conexão com o servidor, passar uma requisição para ele, ou ler o cabeçalho da resposta;

timeout

ocorreu um timeout ao estabelecer uma conexão com o servidor, passar uma requisição para ele, ou ler o cabeçalho da resposta;

invalid_response

um servidor retornou uma resposta vazia ou inválida;

not_found

uma resposta não foi encontrada no servidor;

off

desabilita passar uma requisição para o próximo servidor.

Nota

Deve-se ter em mente que passar uma requisição para o próximo servidor só é possível se nada foi enviado para um cliente ainda. Ou seja, se um erro ou timeout ocorre no meio da transferência de uma resposta, corrigir isso é impossível.

A diretiva também define o que é considerado uma tentativa malsucedida de comunicação com um servidor.

error, timeout, invalid_response

sempre consideradas tentativas malsucedidas, mesmo se não estiverem especificadas na diretiva

not_found

nunca considerada tentativa malsucedida

Passar uma requisição para o próximo servidor pode ser limitado pelo número de tentativas e por tempo.

memcached_next_upstream_timeout#

Sintaxe

memcached_next_upstream_timeout time;

Padrão

memcached_next_upstream_timeout 0;

Contexto

http, server, location

Limita o tempo durante o qual uma requisição pode ser passada para o próximo servidor.

0

desativa esta limitação

memcached_next_upstream_tries#

Sintaxe

memcached_next_upstream_tries number;

Padrão

memcached_next_upstream_tries 0;

Contexto

http, server, location

Limita o número de tentativas possíveis para passar uma requisição para o próximo servidor.

0

desativa esta limitação

memcached_pass#

Sintaxe

memcached_pass address;

Padrão

Contexto

location, if in location

Define o endereço do servidor memcached. O endereço pode ser especificado como um nome de domínio ou endereço IP, e uma porta:

memcached_pass localhost:11211;

ou como um caminho de socket de domínio UNIX:

memcached_pass unix:/tmp/memcached.socket;

Se um nome de domínio resolve para vários endereços, todos eles serão usados de forma round-robin. Além disso, um endereço pode ser especificado como um grupo de servidores.

memcached_read_timeout#

Sintaxe

memcached_read_timeout time;

Padrão

memcached_read_timeout 60s;

Contexto

http, server, location

Define um timeout para ler uma resposta do servidor memcached. O timeout é definido apenas entre duas operações de leitura sucessivas, não para a transmissão de toda a resposta. Se o servidor memcached não transmitir nada dentro deste tempo, a conexão é fechada.

memcached_send_timeout#

Sintaxe

memcached_send_timeout time;

Padrão

memcached_send_timeout 60s;

Contexto

http, server, location

Define um timeout para transmitir uma requisição para o servidor memcached. O timeout é definido apenas entre duas operações de escrita sucessivas, não para a transmissão de toda a requisição. Se o servidor memcached não receber nada dentro deste tempo, a conexão é fechada.

memcached_socket_keepalive#

Sintaxe

memcached_socket_keepalive on | off;

Padrão

memcached_socket_keepalive off;

Contexto

http, server, location

Configura o comportamento "TCP keepalive" para conexões de saída para um servidor memcached.

off

Por padrão, as configurações do sistema operacional estão em vigor para o socket.

on

A opção de socket SO_KEEPALIVE é ativada para o socket.

Variáveis Integradas#

$memcached_key#

Define uma chave para obter resposta de um servidor memcached.