ОПА !!! 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»