Map#

Crea variables cuyos valores dependen de los valores de otras variables.

Ejemplo de configuración#

map $remote_addr $limit {
    127.0.0.1    "";
    default      $binary_remote_addr;
}

limit_conn_zone $limit zone=addr:10m;
limit_conn addr 1;

Directivas#

map#

Sintaxis

map string $variable { ... };

Predeterminado

Contexto

stream

Crea una nueva variable. Su valor depende del primer parámetro, especificado como una cadena con variables, por ejemplo:

set $var1 "foo";
set $var2 "bar";

map $var1$var2 $new_variable {
    default "foobar_value";
}

Aquí, la variable $new_variable tendrá un valor compuesto por las dos variables $var1 y $var2, o un valor predeterminado si estas variables no están definidas.

Nota

Dado que las variables se evalúan solo cuando se utilizan, la mera declaración incluso de un gran número de variables "map" no añade ningún coste adicional al procesamiento de solicitudes.

Los parámetros dentro del bloque map especifican un mapeo entre los valores de origen y los resultantes.

Los valores de origen se especifican como cadenas o expresiones regulares.

Las cadenas se comparan sin distinguir entre mayúsculas y minúsculas.

Una expresión regular debe comenzar con un símbolo ~ para una coincidencia sensible a mayúsculas y minúsculas, o con los símbolos ~* para una coincidencia insensible a mayúsculas y minúsculas. Una expresión regular puede contener capturas con nombre y posicionales que luego pueden usarse en otras directivas junto con la variable resultante.

Si un valor de origen coincide con uno de los nombres de los parámetros especiales descritos a continuación, debe tener el prefijo del símbolo \.

El valor resultante puede contener texto, variables y su combinación.

También se admiten los siguientes parámetros especiales:

default value

establece el valor resultante si el valor de origen no coincide con ninguna de las variantes especificadas. Cuando no se especifica default, el valor resultante predeterminado será una cadena vacía.

hostnames

indica que los valores de origen pueden ser nombres de host con una máscara de prefijo o sufijo. Este parámetro debe especificarse antes de la lista de valores.

Por ejemplo,

*.example.com 1;
example.*     1;

Los siguientes dos registros

example.com   1;
*.example.com 1;

pueden combinarse:

.example.com  1;

include file

incluye un archivo con valores. Puede haber varias inclusiones.

volatile

indica que la variable no es almacenable en caché.

Si el valor de origen coincide con más de una de las variantes especificadas, por ejemplo, tanto una máscara como una expresión regular coinciden, se elegirá la primera variante coincidente, en el siguiente orden de prioridad:

  1. Valor de cadena sin máscara

  2. Valor de cadena más largo con una máscara de prefijo, por ejemplo *.example.com

  3. Valor de cadena más largo con una máscara de sufijo, por ejemplo mail.*

  4. Primera expresión regular coincidente (en orden de aparición en un archivo de configuración)

  5. Valor predeterminado (default)

map_hash_bucket_size#

Sintaxis

map_hash_bucket_size size;

Predeterminado

map_hash_bucket_size 32|64|128;

Contexto

stream

Establece el tamaño del bucket para las tablas hash de las variables map. El valor predeterminado depende del tamaño de la línea de caché del procesador. Los detalles de la configuración de las tablas hash se proporcionan por separado.

map_hash_max_size#

Sintaxis

map_hash_max_size size;

Predeterminado

map_hash_max_size 2048;

Contexto

stream

Establece el tamaño máximo de las tablas hash de las variables map. Los detalles de la configuración de las tablas hash se proporcionan por separado.