Map#

Crea variables cuyos valores dependen de valores de otras variables.

Ejemplo de configuración#

map $http_host $name {
    hostnames;

    default       0;

    example.com   1;
    *.example.com 1;
    example.org   2;
    *.example.org 2;
    .example.net  3;
    wap.*         4;
}

map $http_user_agent $mobile {
    default       0;
    "~Opera Mini" 1;
}

Directivas#

map#

Syntax

map string $variable { ... }

Predeterminado

Context

http

Crea una nueva variable. Su valor depende del primer parámetro, especificado como una cadena que contiene 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 tipo 'map', no conlleva coste alguno al procesamiento de las solicitudes.

Los parámetros dentro del bloque map especifican un mapeo entre valores de origen y 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 como prefijo el símbolo \.

El valor resultante puede contener texto, variables o una combinación de ambos.

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 se puede almacenar en caché.

Si el valor de origen coincide con más de una de las variantes especificadas, por ejemplo cuando coincide tanto una máscara como una expresión regular, 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#

Syntax

map_hash_bucket_size size;

Predeterminado

map_hash_bucket_size 32|64|128;

Context

http

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

map_hash_max_size#

Syntax

map_hash_max_size size;

Predeterminado

map_hash_max_size 2048;

Context

http

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