Geo#

O módulo cria variáveis com valores dependendo do endereço IP do cliente.

Ao compilar a partir do código-fonte, o módulo é compilado por padrão; ele pode ser desabilitado com a opção de compilação --without-http_geo_module.

Em pacotes e imagens de nossos repositórios, o módulo está incluído na compilação.

Exemplo de configuração#

geo $geo {
    default        0;

    127.0.0.1      2;
    192.168.1.0/24 1;
    10.1.0.0/16    1;

    ::1            2;
    2001:0db8::/32 1;
}

Diretivas#

geo#

Sintaxe

geo [$address] $variable { ... }

Padrão

—

Contexto

http

Descreve a dependência dos valores da variável especificada no endereço IP do cliente. Por padrão, o endereço é obtido da variável $remote_addr, mas também pode ser obtido de outra variável, por exemplo:

geo $arg_remote_addr $geo {
    ...;
}

Nota

Como as variáveis são avaliadas apenas quando usadas, a mera existência de até mesmo um grande número de variáveis geo declaradas não causa custos extras para o processamento de requisições.

Se o valor de uma variável não representa um endereço IP válido, então o endereço "255.255.255.255" é usado.

Os endereços são especificados como prefixos em notação CIDR (incluindo endereços individuais) ou como intervalos.

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

delete

exclui a rede especificada

default

o valor definido para a variável se o endereço do cliente não corresponder a nenhum dos endereços especificados. Quando os endereços são especificados em notação CIDR, 0.0.0.0/0 e ::/0 podem ser usados em vez de default. Quando default não é especificado, o valor padrão será uma string vazia

include

inclui um arquivo com endereços e valores. O nome do arquivo pode conter curingas (glob); nesse caso, todos os arquivos correspondentes são incluídos. Pode haver várias inclusões.

proxy

define endereços confiáveis. Quando uma requisição vem de um endereço confiável, um endereço do campo de cabeçalho de requisição X-Forwarded-For será usado em seu lugar. Em contraste com os endereços regulares, endereços confiáveis são verificados sequencialmente.

proxy_recursive

habilita busca recursiva de endereço. Se a busca recursiva estiver desabilitada, então em vez do endereço original do cliente que corresponde a um dos endereços confiáveis, o último endereço enviado em X-Forwarded-For será usado. Se a busca recursiva estiver habilitada, então em vez do endereço original do cliente que corresponde a um dos endereços confiáveis, o último endereço não confiável enviado em X-Forwarded-For será usado.

ranges

indica que os endereços são especificados como intervalos. Este parâmetro deve ser o primeiro. Para acelerar o carregamento de uma base geo, os endereços devem ser colocados em ordem crescente.

volatile

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

Exemplo:

geo $country {
    default        ZZ;
    include        conf/geo.conf;
    delete         127.0.0.0/16;
    proxy          192.168.100.0/24;
    proxy          2001:0db8::/32;

    127.0.0.0/24   US;
    127.0.0.1/32   RU;
    10.1.0.0/16    RU;
    192.168.1.0/24 UK;
}

O arquivo conf/geo.conf poderia conter as seguintes linhas:

10.2.0.0/16    RU;
192.168.2.0/24 RU;

O valor da correspondência mais específica é usado. Por exemplo, para o endereço 127.0.0.1, o valor RU será escolhido, não US.

Exemplo de descrição de intervalo:

geo $country {
    ranges;
    default                   ZZ;
    127.0.0.0-127.0.0.0       US;
    127.0.0.1-127.0.0.1       RU;
    127.0.0.2-127.0.0.255     US;
    10.1.0.0-10.1.255.255     RU;
    192.168.1.0-192.168.1.255 UK;
}