Geo#

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

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. 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.

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