Case Study Jobteaser Case Study: Scalable Public APIs with KrakenD

You are viewing a previous version of KrakenD Enterprise Edition (v2.3), go to the latest version

Document updated on Oct 25, 2022

GeoIP integration

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
* required fields

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 integer
    • Names map[string]string
  • Continent
    • Code string
    • GeoNameID integer
    • Names map[string]string
  • Country
    • GeoNameID integer
    • IsInEuropeanUnion bool
    • IsoCode string
    • Names map[string]string
  • Location
    • AccuracyRadius integer16
    • Latitude float64
    • Longitude float64
    • MetroCode integer
    • TimeZonestring
  • Postal
    • Code string
  • RegisteredCountry
    • GeoNameID integer
    • IsInEuropeanUnion bool
    • IsoCode string
    • Names map[string]string
  • RepresentedCountry
    • GeoNameID integer
    • IsInEuropeanUnion bool
    • IsoCode string
    • Names map[string]string
    • Typestring
  • Subdivisions (array):
    • GeoNameID integer
    • IsoCode string
    • Names map[string]string
  • Traits
    • IsAnonymousProxy bool
    • IsSatelliteProvider bool
Scarf

Unresolved issues?

The documentation is only a piece of the help you can get! Whether you are looking for Open Source or Enterprise support, see more support channels that can help you.

See all support channels