Document updated on Oct 25, 2022
GeoIP integration: Location-based services
The GeoIP integration allows you load Maxmind’s GeoIP2 City database (both commercial and free versions) and enrich all KrakenD calls to your backends with geo data.
To add GeoIP information to your backends, copy the Maxmind’s database file into the filesystem (it has to be a city DB) and specify its location in the configuration. Downloading the database requires signing up to MaxMind’s website.
Download the commercial or free GeoIP2 City
Configuration for GeoIP
Add the following extra_config
in the root to your configuration file:
{
"version": 3,
"plugin": {
"pattern":".so",
"folder": "/opt/krakend/plugins/"
},
"extra_config": {
"plugin/http-server": {
"name": ["geoip", "another-plugin-maybe" ],
"geoip": {
"citydb_path": "/etc/krakend/GeoIP2-City.mmdb"
}
}
}
}
Fields of GeoIP
citydb_path
* string- The path in the filesystem containing the database in GeoIP2 Binary (
.mmdb
) format. Relative to the working dir or absolute path.Example:"path/to/GeoIP2-City.mmdb"
Data passed to backends
When the GeoIP plugin is enabled, all requests to the backend are enriched with a header X-GeoIP
.
The following structure is available. Keys that couldn’t retrieve its associated data show an empty value. You can use these fields in the GeoIP policies.
City
GeoNameID
integerNames
map[string]string
Continent
Code
stringGeoNameID
integerNames
map[string]string
Country
GeoNameID
integerIsInEuropeanUnion
boolIsoCode
stringNames
map[string]string
Location
AccuracyRadius
integer16Latitude
float64Longitude
float64MetroCode
integerTimeZone
string
Postal
Code
string
RegisteredCountry
GeoNameID
integerIsInEuropeanUnion
boolIsoCode
stringNames
map[string]string
RepresentedCountry
GeoNameID
integerIsInEuropeanUnion
boolIsoCode
stringNames
map[string]stringType
string
Subdivisions
(array):GeoNameID
integerIsoCode
stringNames
map[string]string
Traits
IsAnonymousProxy
boolIsSatelliteProvider
bool