Map#

Cria variáveis cujos valores dependem de valores de outras variáveis.

Exemplo de Configuração#

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;
}

Diretivas#

map#

Sintaxe

map string $variable { ... }

Padrão

Contexto

http

Cria uma nova variável. Seu valor depende do primeiro parâmetro, especificado como uma string com variáveis, por exemplo:

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

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

Aqui, a variável $new_variable terá um valor composto pelas duas variáveis $var1 e $var2, ou um valor padrão se essas variáveis não estiverem definidas.

Nota

Como as variáveis são avaliadas apenas quando são usadas, a mera declaração mesmo de um grande número de variáveis "map" não adiciona custos extras ao processamento de requisições.

Parâmetros dentro do bloco map especificam um mapeamento entre valores de origem e resultantes.

Valores de origem são especificados como strings ou expressões regulares.

Strings são correspondidas ignorando maiúsculas e minúsculas.

Uma expressão regular deve começar com o símbolo ~ para correspondência sensível a maiúsculas e minúsculas, ou com os símbolos ~* para correspondência insensível a maiúsculas e minúsculas. Uma expressão regular pode conter capturas nomeadas e posicionais que podem ser usadas posteriormente em outras diretivas junto com a variável resultante.

Se um valor de origem corresponder a um dos nomes dos parâmetros especiais descritos abaixo, ele deve ser prefixado com o símbolo \.

O valor resultante pode conter texto, variável e sua combinação.

Os seguintes parâmetros especiais também são suportados:

default value

define o valor resultante se o valor de origem não corresponder a nenhuma das variantes especificadas. Quando default não é especificado, o valor resultante padrão será uma string vazia.

hostnames

indica que valores de origem podem ser hostnames com uma máscara de prefixo ou sufixo. Este parâmetro deve ser especificado antes da lista de valores.

Por exemplo,

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

Os seguintes dois registros

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

podem ser combinados:

.example.com  1;

include file

inclui um arquivo com valores. Pode haver várias inclusões.

volatile

indica que a variável não é cacheável.

Se o valor de origem corresponder a mais de uma das variantes especificadas, por exemplo, tanto uma máscara quanto uma expressão regular correspondem, a primeira variante correspondente será escolhida, na seguinte ordem de prioridade:

  1. Valor string sem máscara

  2. Valor string mais longo com máscara de prefixo, por exemplo *.example.com

  3. Valor string mais longo com máscara de sufixo, por exemplo mail.*

  4. Primeira expressão regular correspondente (na ordem de aparição no arquivo de configuração)

  5. Valor padrão (default)

map_hash_bucket_size#

Sintaxe

map_hash_bucket_size size;

Padrão

map_hash_bucket_size 32|64|128;

Contexto

http

Define o tamanho do bucket para as tabelas hash das variáveis map. O valor padrão depende do tamanho da linha de cache do processador. Os detalhes da configuração de tabelas hash são fornecidos separadamente.

map_hash_max_size#

Sintaxe

map_hash_max_size size;

Padrão

map_hash_max_size 2048;

Contexto

http

Define o tamanho máximo das tabelas hash das variáveis map. Os detalhes da configuração de tabelas hash são fornecidos separadamente.