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