<!-- review: finished -->

<a id="http-memcached"></a>

# Memcached

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

<a id="configuration-example-29"></a>

## Ejemplo de configuración

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

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

<a id="directives-30"></a>

## Directivas

<a id="index-0"></a>

<a id="memcached-bind"></a>

### memcached_bind

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `memcached_bind` address [`transparent`] | `off`;   |
|--------------------------------------------------------------------------------------------|-----------------------------------------------------|
| Predeterminado                                                                             | —                                                   |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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:

```nginx
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](https://es.angie.software//angie/docs/configuration/modules/core.md#user). 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.

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

<a id="index-1"></a>

<a id="memcached-buffer-size"></a>

### memcached_buffer_size

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `memcached_buffer_size` size;   |
|--------------------------------------------------------------------------------------------|---------------------------------|
| Predeterminado                                                                             | `memcached_buffer_size 4k|8k;`  |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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.

<a id="index-2"></a>

<a id="memcached-connect-timeout"></a>

### memcached_connect_timeout

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `memcached_connect_timeout` time;   |
|--------------------------------------------------------------------------------------------|-------------------------------------|
| Predeterminado                                                                             | `memcached_connect_timeout 60s;`    |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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.

<a id="index-3"></a>

<a id="memcached-gzip-flag"></a>

### memcached_gzip_flag

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `memcached_gzip_flag` flag;   |
|--------------------------------------------------------------------------------------------|-------------------------------|
| Predeterminado                                                                             | —                             |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location        |

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

<a id="index-4"></a>

<a id="memcached-next-upstream"></a>

### memcached_next_upstream

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `memcached_next_upstream` `error` | `timeout` | `invalid_response` | `not_found` | `off` ...;   |
|--------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------|
| Predeterminado                                                                             | `memcached_next_upstream error timeout;`                                                        |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                                                                          |

Especifica en qué casos una solicitud debe pasarse al siguiente servidor en el [grupo upstream](https://es.angie.software//angie/docs/configuration/modules/http/http_upstream.md#http-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.                                                                                  |

#### NOTE
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](https://es.angie.software//angie/docs/configuration/modules/http/http_upstream.md#max-fails) de comunicación con un servidor.

| `error`, `timeout`, `invalid_response`   | siempre se consideran intentos fallidos, incluso si no se especifican en la directiva   |
|------------------------------------------|-----------------------------------------------------------------------------------------|
| `not_found`                              | nunca se considera un intento fallido                                                   |

El paso de una solicitud al siguiente servidor puede estar limitado por el [número de intentos](#memcached-next-upstream-tries) y por el [tiempo](#memcached-next-upstream-timeout).

<a id="index-5"></a>

<a id="memcached-next-upstream-timeout"></a>

### memcached_next_upstream_timeout

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `memcached_next_upstream_timeout` time;   |
|--------------------------------------------------------------------------------------------|-------------------------------------------|
| Predeterminado                                                                             | `memcached_next_upstream_timeout 0;`      |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                    |

Limita el tiempo durante el cual una solicitud puede ser pasada al [siguiente](#memcached-next-upstream) servidor.

| `0`   | desactiva esta limitación   |
|-------|-----------------------------|

<a id="index-6"></a>

<a id="memcached-next-upstream-tries"></a>

### memcached_next_upstream_tries

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `memcached_next_upstream_tries` number;   |
|--------------------------------------------------------------------------------------------|-------------------------------------------|
| Predeterminado                                                                             | `memcached_next_upstream_tries 0;`        |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                    |

Limita el número de posibles intentos para pasar una solicitud al [siguiente](#memcached-next-upstream) servidor.

| `0`   | desactiva esta limitación   |
|-------|-----------------------------|

<a id="index-7"></a>

<a id="memcached-pass"></a>

### memcached_pass

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `memcached_pass` address;   |
|--------------------------------------------------------------------------------------------|-----------------------------|
| Predeterminado                                                                             | —                           |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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:

```nginx
memcached_pass localhost:11211;
```

o como una ruta de socket de dominio UNIX:

```nginx
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](https://es.angie.software//angie/docs/configuration/modules/http/http_upstream.md#http-upstream).

#### NOTE
If `memcached_pass` is placed in a `location` whose prefix ends with a slash
(for example, `location /name/`),
and the [auto_redirect](https://es.angie.software//angie/docs/configuration/modules/http/index.md#auto-redirect) directive is set to `default`,
requests without a trailing slash will be redirected (`/name -> /name/`).

<a id="index-8"></a>

<a id="memcached-read-timeout"></a>

### memcached_read_timeout

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `memcached_read_timeout` time;   |
|--------------------------------------------------------------------------------------------|----------------------------------|
| Predeterminado                                                                             | `memcached_read_timeout 60s;`    |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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.

<a id="index-9"></a>

<a id="memcached-send-timeout"></a>

### memcached_send_timeout

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `memcached_send_timeout` time;   |
|--------------------------------------------------------------------------------------------|----------------------------------|
| Predeterminado                                                                             | `memcached_send_timeout 60s;`    |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | 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.

<a id="index-10"></a>

<a id="memcached-socket-keepalive"></a>

### memcached_socket_keepalive

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `memcached_socket_keepalive` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|----------------------------------------------|
| Predeterminado                                                                             | `memcached_socket_keepalive off;`            |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                       |

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

| `off`   | Por defecto, se aplica la configuración del sistema operativo para el socket.   |
|---------|---------------------------------------------------------------------------------|
| `on`    | La opción de socket SO_KEEPALIVE se activa para el socket.                      |

<a id="built-in-variables-4"></a>

## Variables integradas

<a id="v-memcached-key"></a>

### `$memcached_key`

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