Рубрики
Uncategorized

Série nginx #5: Trabalhando com Geolocalização por ip

ОПА !!! Vamos Ardender конфигуратор Nosso Primeiro Módulo Externo. 🤓🤓 aprenderemos como Realizar … Tagged with Nginx, DevOps, Sysadmin, Geoip.

ОПА !!! Vamos Ardender конфигуратор Nosso Primeiro Módulo Externo. 🤓🤓

Aprenderemos como realizar bloquio e balancear requisições conforme a região do usuário.

Para Realizar o bloquio por cidade ou país, utilizaremos o módulo Geoip Анкет

Caso Você não saiba instalar um módulo, acesse o capítulo série nginx #4: instalando módulos de terceiros.

Após instalar O Módulo, Carregue-O no arquivo de configuração do nginx.

echo "load_module modules-available/ngx_http_geoip2_module.so;" \
    | sudo tee -a /etc/nginx/modules-enabled/geoip2.conf

Базы данных GEOIP2

Agora é Evening Baixar OS Arquivos .mmdb . ELES VOSUEM AS CONFIGURURACõES E REGRAS EXORCEARIAS PARA O Módulo. Para isso, acesse o сайт https://dev.maxmind.com/geoip/geolite2-free-geolocation-data E реализовать o Скачать. Após Baixá-Los, Esensia em Uma Pasta Como /etc/nginx/geoip2 , Por Exemplo.

Configurando o módulo

Para Configurar é simples. Iremos carregar o arquivo baixado e criar nossas variaveis que terão os valores de código de país, cidade e/out contonente.

http {
    ...

    # Cria variáveis relacionadas ao país de acesso
    #
    geoip2 GeoIP2/GeoLite2-Country.mmdb {
        $geoip2_data_continent_code   default="NU" continent code;
        $geoip2_data_country_iso_code country iso_code;
        $geoip2_metadata_country_build metadata build_epoch;
    }

    # Cria variáveis relacionadas à cidade de acesso
    #
    geoip2 GeoIP2/GeoLite2-City.mmdb {
        $geoip2_data_city_name   city names en;
        $geoip2_data_postal_code postal code;
        $geoip2_data_latitude    location latitude;
        $geoip2_data_longitude   location longitude;
        $geoip2_data_state_name  subdivisions 0 names en;
        $geoip2_data_state_code  subdivisions 0 iso_code;
    }
}

Ainda no bloco http , Criaremos uma variável com a diretiva карта para definiir Quais países terão permissão ou não de acesso.

http {
    ...

    # Permite apenas países lusófonos
    #
    map $geoip2_data_country_code $country_blocked {
        default 1;

        AO 0;
        BR 0;
        CV 0;
        GW 0;
        MZ 0;
        PT 0;
        ST 0;
        TL 0;
        GQ 0;
    }
}

Permite todos os países que sosua o Valor «0» Tenham Permissão de Acesso.

Нет контекста сервер , Defineiremos Nossa condição.

server {
    server_name valdeir.dev;

    if ($country_blocked) {
        return 403;
    }
}

Reincie o nginx e faca o teste.

nginx -s reload

Балансировщик нагрузки

Алем де Блокеис, Podemos USAR O Módulo de Geoip2 Пара Криар Ум балансировщик нагрузки Por País Ou Contonente, Por Exemplo.

upstream all {
    server default1.valdeir.dev:8080;
    server default2.valdeir.dev:8080;
}

upstream eu {
    server eu1.example.com:8080;
    server eu2.example.com:8080;
}

upstream as {
    server as1.example.com:8080;
    server as2.example.com:8080;
}

http {
    geoip2 GeoIP2/GeoLite2-Country.mmdb {
        $geoip2_data_continent_code continent code;
    }

    map $geoip2_data_continent_code $nearest_server {
        default all;

        EU      eu;
        AS      as;
    }

    server {
        listen 80;
        proxy_pass http://$nearest_server;
    }
}

Заключение

Parabéns! Заключение Mais uma etapa. Caso Tenha Dúvidas Ou Suestões, Só Deixar Nos Comentários.

Оригинал: «https://dev.to/valdeirpsr/serie-nginx-5-trabalhando-com-geolocalizacao-por-ip-314a»