Memcached#

Este módulo se utiliza para obtener respuestas desde un servidor memcached. La clave se establece en la variable $memcached_key. Una respuesta debe estar previamente almacenada en memcached por medios externos a Angie.

Ejemplo de configuración#

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

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

Directivas#

memcached_bind#

Sintaxis

memcached_bind address [transparent] | off;

Valor predeterminado

Contexto

http, server, location

Hace que las conexiones salientes a un servidor memcached se originen desde la dirección IP local especificada con un puerto opcional. El valor del parámetro puede contener variables. El valor especial off cancela el efecto de la directiva memcached_bind heredada del nivel de configuración anterior, lo que permite al sistema asignar automáticamente la dirección IP local y el puerto.

El parámetro transparent permite que las conexiones salientes a un servidor memcached se originen desde una dirección IP no local, por ejemplo, desde una dirección IP real de un cliente:

memcached_bind $remote_addr transparent;

Para que este parámetro funcione, normalmente es necesario ejecutar los procesos de trabajo de Angie con privilegios de superusuario. En Linux no es necesario, ya que si se especifica el parámetro transparent, los procesos de trabajo heredan la capacidad CAP_NET_RAW del proceso maestro.

Nota

Es necesario configurar la tabla de enrutamiento del kernel para interceptar el tráfico de red desde el servidor memcached.

memcached_buffer_size#

Sintaxis

memcached_buffer_size size;

Valor predeterminado

memcached_buffer_size 4k|8k;

Contexto

http, server, location

Establece el tamaño del búfer utilizado para leer la primera parte de la respuesta recibida del servidor memcached. La respuesta se pasa al cliente de forma sincrónica, tan pronto como se recibe.

memcached_connect_timeout#

Sintaxis

memcached_connect_timeout time;

Valor predeterminado

memcached_connect_timeout 60s;

Contexto

http, server, location

Define un tiempo de espera para establecer una conexión con un servidor memcached. Cabe destacar que este tiempo de espera normalmente no puede exceder los 75 segundos.

memcached_gzip_flag#

Sintaxis

memcached_gzip_flag flag;

Valor predeterminado

Contexto

http, server, location

Habilita la comprobación de la presencia del flag en la respuesta del servidor memcached y establece el campo de cabecera de respuesta Content-Encoding a "gzip" si el flag está establecido.

memcached_next_upstream#

Sintaxis

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

Valor predeterminado

memcached_next_upstream error timeout;

Contexto

http, server, location

Especifica en qué casos una solicitud debe pasarse al siguiente servidor en el grupo upstream:

error

ocurrió un error al establecer una conexión con el servidor, al pasar una solicitud a él o al leer la cabecera de respuesta;

timeout

se produjo un tiempo de espera al establecer una conexión con el servidor, al pasar una solicitud a él o al leer la cabecera de respuesta;

invalid_response

un servidor devolvió una respuesta vacía o inválida;

not_found

no se encontró una respuesta en el servidor;

off

desactiva el paso de una solicitud al siguiente servidor.

Nota

Se debe tener en cuenta que pasar una solicitud al siguiente servidor solo es posible si aún no se ha enviado nada al cliente. Es decir, si ocurre un error o tiempo de espera en medio de la transferencia de una respuesta, es imposible solucionarlo.

La directiva también define lo que se considera un intento fallido de comunicación con un servidor.

error, timeout, invalid_response

siempre se cuentan como intentos fallidos, incluso si no se especifican en la directiva

not_found

nunca se cuentan como intentos fallidos

El paso de una solicitud al siguiente servidor puede estar limitado por el número de intentos y por el tiempo.

memcached_next_upstream_timeout#

Sintaxis

memcached_next_upstream_timeout time;

Valor predeterminado

memcached_next_upstream_timeout 0;

Contexto

http, server, location

Limita el tiempo durante el cual una solicitud puede ser pasada al siguiente servidor.

0

desactiva esta limitación

memcached_next_upstream_tries#

Sintaxis

memcached_next_upstream_tries number;

Valor predeterminado

memcached_next_upstream_tries 0;

Contexto

http, server, location

Limita el número de posibles intentos para pasar una solicitud al siguiente servidor.

0

desactiva esta limitación

memcached_pass#

Sintaxis

memcached_pass address;

Valor predeterminado

Contexto

location, if in location

Establece la dirección del servidor memcached. La dirección puede especificarse como un nombre de dominio o dirección IP, y un puerto:

memcached_pass localhost:11211;

o como una ruta de socket de dominio UNIX:

memcached_pass unix:/tmp/memcached.socket;

Si un nombre de dominio se resuelve a varias direcciones, todas ellas se utilizarán de forma rotatoria. Además, una dirección puede especificarse como un grupo de servidores.

memcached_read_timeout#

Sintaxis

memcached_read_timeout time;

Valor predeterminado

memcached_read_timeout 60s;

Contexto

http, server, location

Define un tiempo de espera para leer una respuesta del servidor memcached. El tiempo de espera se aplica solo entre dos operaciones de lectura consecutivas, no para la transmisión de toda la respuesta. Si el servidor memcached no transmite nada dentro de este tiempo, se cierra la conexión.

memcached_send_timeout#

Sintaxis

memcached_send_timeout time;

Valor predeterminado

memcached_send_timeout 60s;

Contexto

http, server, location

Establece un tiempo de espera para transmitir una solicitud al servidor memcached. El tiempo de espera se aplica solo entre dos operaciones de escritura sucesivas, no para la transmisión de toda la solicitud. Si el servidor memcached no recibe nada dentro de este tiempo, se cierra la conexión.

memcached_socket_keepalive#

Sintaxis

memcached_socket_keepalive on | off;

Valor predeterminado

memcached_socket_keepalive off;

Contexto

http, server, location

Configura el comportamiento de "keepalive" TCP para las conexiones salientes a un servidor memcached.

off

Por defecto, la configuración del sistema operativo está en efecto para el socket.

on

La opción de socket SO_KEEPALIVE está activada para el socket.

Variables Integradas#

$memcached_key#

Define una clave para obtener la respuesta de un servidor memcached.