ngx_http_geoip2_module - creates variables with values from the maxmind geoip2 databases based on the client IP (supports both IPv4 and IPv6)
First install libmaxminddb as described in its README.md file.
Compile nginx:
./configure --add-module=/path/to/ngx_http_geoip2_module
make
make install
The free GeoLite2 databases are available from Maxminds website
GeoLite2 City GeoLite2 Country
http {
...
geoip2 /etc/maxmind-country.mmdb {
$geoip2_data_country_code default=US country iso_code;
$geoip2_data_country_name country names en;
}
geoip2 /etc/maxmind-city.mmdb {
$geoip2_data_city_name default=London city names en;
}
....
}