geoip2: Módulo GeoIP2 do NGINX
Instalação
Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:
- RedHat Enterprise Linux 7, 8, 9 e 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 e Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-geoip2
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-geoip2
Ative o módulo adicionando o seguinte no topo de /etc/nginx/nginx.conf:
load_module modules/ngx_http_geoip2_module.so;
load_module modules/ngx_stream_geoip2_module.so;
Este documento descreve o nginx-module-geoip2 v3.4 lançado em 22 de junho de 2022.
ngx_http_geoip2_module - cria variáveis com valores dos bancos de dados maxmind geoip2 com base no IP do cliente (padrão) ou de uma variável específica (suporta tanto IPv4 quanto IPv6)
O módulo agora suporta streams do nginx e pode ser usado da mesma forma que o módulo http.
Download do Banco de Dados Maxmind GeoLite2 (opcional)
Os bancos de dados GeoLite2 gratuitos estão disponíveis no site da Maxmind (é necessário se inscrever)
Exemplo de Uso:
http {
...
geoip2 /etc/maxmind-country.mmdb {
auto_reload 5m;
$geoip2_metadata_country_build metadata build_epoch;
$geoip2_data_country_code default=US source=$variable_with_ip country iso_code;
$geoip2_data_country_name country names en;
}
geoip2 /etc/maxmind-city.mmdb {
$geoip2_data_city_name default=London city names en;
}
....
fastcgi_param COUNTRY_CODE $geoip2_data_country_code;
fastcgi_param COUNTRY_NAME $geoip2_data_country_name;
fastcgi_param CITY_NAME $geoip2_data_city_name;
....
}
stream {
...
geoip2 /etc/maxmind-country.mmdb {
$geoip2_data_country_code default=US source=$remote_addr country iso_code;
}
...
}
Metadados:
Recupere metadados sobre o banco de dados geoip.
$variable_name metadata <field>
Autoreload (padrão: desativado):
Ativar o auto reload fará com que o nginx verifique o tempo de modificação do banco de dados no intervalo especificado e o recarregue se tiver mudado.
auto_reload <interval>
GeoIP:
$variable_name [default=<value] [source=$variable_with_ip] path ...
Se a fonte não for especificada, $remote_addr será usada para realizar a busca.
Para encontrar o caminho dos dados que você deseja (por exemplo: country names en), use a ferramenta mmdblookup:
$ mmdblookup --file /usr/share/GeoIP/GeoIP2-Country.mmdb --ip 8.8.8.8
{
"country":
{
"geoname_id":
6252001 <uint32>
"iso_code":
"US" <utf8_string>
"names":
{
"de":
"USA" <utf8_string>
"en":
"United States" <utf8_string>
}
}
}
$ mmdblookup --file /usr/share/GeoIP/GeoIP2-Country.mmdb --ip 8.8.8.8 country names en
"United States" <utf8_string>
Isso se traduz em:
$country_name "default=United States" source=$remote_addr country names en
Comandos Adicionais:
Esses comandos funcionam da mesma forma que o original ngx_http_geoip_module documentado aqui: http://nginx.org/en/docs/http/ngx_http_geoip_module.html#geoip_proxy.
No entanto, se você fornecer a opção source=$variable_with_ip em uma variável, essas configurações serão ignoradas para essa variável específica.
geoip2_proxy < cidr >
geoip2_proxy_recursive < on | off >
GitHub
Você pode encontrar dicas de configuração adicionais e documentação para este módulo no repositório do GitHub para nginx-module-geoip2.