GeoIP2#
O módulo GeoIP2 implementa consulta em bancos de dados MaxMind GeoIP2 pelo endereço IP do cliente (por padrão) ou pelo valor de uma variável específica. Ele suporta tanto IPv4 quanto IPv6. Para instalar o módulo, use um dos seguintes pacotes: Angie: Angie PRO: Para trabalhar com o módulo, é necessário carregá-lo no contexto de No exemplo de configuração abaixo, além das diretivas do próprio módulo, as diretivas do módulo echo também são usadas: Documentação detalhada e código-fonte estão disponíveis em:
leev/ngx_http_geoip2_moduleInstalação#
angie-module-geoip2
angie-pro-module-geoip2
Carregando o Módulo#
main{}
:load_module modules/ngx_http_geoip2_module.so; # para uso no bloco http{}
load_module modules/ngx_stream_geoip2_module.so; # para uso no contexto stream{}
load_module modules/ngx_http_echo_module.so;
Exemplo de Configuração#
http {
geoip2 /var/lib/GeoIP/GeoLite2-Country.mmdb {
auto_reload 1h;
$geoip2_country_code default=RU source=$http_x_forwarded_for country iso_code;
$geoip2_country_name source=$http_x_forwarded_for country names ru;
}
log_format with_geoip '$server_port $remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$http_host" '
'country="$geoip2_country_code"';
map $geoip2_country_code $denied {
PL "1";
QA "1";
}
server {
listen 80;
root /usr/share/angie/html;
index index.html index.htm;
access_log /var/log/angie/geoip_access.log with_geoip;
if ($denied) {
return 403;
}
location / {
echo "ip = $http_x_forwarded_for";
echo "code = $geoip2_country_code";
echo "name = $geoip2_country_name";
}
}
}
Exemplos de Execução de Requisições#
$ curl -H'X-Forwarded-For: 51.68.138.153' http://127.0.0.1
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>Angie/1.10.2</center>
</body>
</html>
$ curl -H'X-Forwarded-For: 8.8.8.8' http://127.0.0.1
ip = 8.8.8.8
code = US
name = United States
$ curl -H'X-Forwarded-For: 77.88.44.242' http://127.0.0.1
ip = 77.88.44.242
code = RU
name = Russia
Informações Adicionais#