This is an old revision of the document!


How to enable GEOIP on ADC?

There are two sections in the LiteSpeed ADC WEB Admin Console settings: IP to GeoLocation DB and IP2Location DB. Both the MaxMind legacy db and MaxMind GeoIP2 db should use the IP to GeoLocation DB section. Don't use IP2Location DB for MaxMind GeoIP2 database since IP2Location DB is meant for the IP2Location database. You should only use one location database at a time.

To setup and enable GeoIP on LiteSpeed ADC, you will need to choose one database, download and install the database to a directory, setup the database path in ADC Admin, Enable GeoLocation Lookup should set to Yes, then set rewrite rules in virtual host rewrite tab and finally run some tests.

First, you should set Enable GeoLocation Lookup to Yes. Without setting this, ADC won't look up GEOIP.

You will need to choose only one database to be used for your GeoIP: MaxMind GeoIP2, MaxMind Legacy Database, or IP2location database. Then, set up the right database path in the appropriate section in the ADC Web Admin Console.

MaxMind GeoIP2 Database

Download and Install Database

Let's assume that you will store the DB in /usr/share/GeoIP/.

Download the free database from https://dev.maxmind.com/geoip/geoip2/geolite2/:

wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz
tar -zxvf GeoLite2-Country.tar.gz

Then, move the file GeoLite2-Country.mmdb to

/usr/share/GeoIP/GeoLite2-Country.mmdb

Set up Database File Path and Name

In ADC WebAdmin, configure the database location and name(Both DB File Path and DB Name are mandatory and can not be empty). Your choice of DB name is important: you must use COUNTRY_DB for a country database, and CITY_DB for a city database. Navigate to Configuration > Server > General > set MaxMind GeoIP DB to the database path. Then set DB Name to COUNTRY_DB or CITY_DB. Environment Variables and Notes are optional.

Advanced Configuration:GEOIP2 Environment Variables

The full power of GeoIP2 requires the use of environment variables in the LiteSpeed configuration. The format used is designed to be as similar as possible to the Apache mod_maxminddb environment described here ,specifically for the MaxMindDBEnv variable. Each environment variable is specified in the environment text box as one line:

  • The name of the environment variable that will be exported, for example GEOIP_COUNTRY_NAME
  • A space
  • The logical name of the environment variable, which consists of:
    • The name of the database as specified in the DB Name field as the prefix. For example, COUNTRY_DB
    • A forward slash /
    • The name of the field as displayed in mmdblookup. For example: country/names/en

Thus the default generates:

GEOIP_COUNTRY_NAME COUNTRY_DB/country/names/en

If you wanted the country code to be displayed in Spanish, you would enter the environment variable:

GEOIP_COUNTRY_NAME COUNTRY_DB/country/names/es

Note that if a variable is used by multiple databases (for example, the default GEOIP_COUNTRY_NAME), you need to override the value in the last database specified (or all databases in case they get reordered, just to be safe).

Note that subdivisions is an array and must be referenced by index (usually 0 or 1).

The default environment variables vary by database and are designed to be as similar to the legacy GeoIP environment variables as possible.

Our default list is:

"GEOIP_COUNTRY_CODE", "/country/iso_code" 
"GEOIP_CONTINENT_CODE", "/continent/code" 
"GEOIP_REGION", "/subdivisions/0/iso_code"
"GEOIP_METRO_CODE", "/location/metro_code"
"GEOIP_LATITUDE", "/location/latitude"
"GEOIP_LONGITUDE", "/location/longitude"
"GEOIP_POSTAL_CODE", "/postal/code"
"GEOIP_CITY", "/city/names/en"

You can customize the configuration to add the environment variables you want as describe above.

Example 1

Make sure the entry name is correct.

You can add the following:

GEOIP_REGION_NAME CITY_DB/subdivisions/0/names/en

Please make sure the correct entry name is used. For example, the following is incorrect: name should be names.

GEOIP_REGION_NAME CITY_DB/subdivisions/0/name/en

Example 2

You can customize a name as MyTest_COUNTRY_CODE, like so:

MyTest_COUNTRY_CODE CITY_DB/country/iso_code

US will be replaced by the country code you are visiting from, such as SG or others.

Example 3

You can customize a name as MyTest2_COUNTRY_CODE by using a defined COUNTRY DB name COUNTRY_DB_20190402 with a country database.

MyTest2_COUNTRY_CODE COUNTRY_DB_20190402/country/iso_code

Example 4

You can customize all of the following:

HTTP_GEOIP_CITY CITY_DB/city/names/en
HTTP_GEOIP_POSTAL_CODE CITY_DB/postal/code
HTTP_GEOIP_CITY_CONTINENT_CODE CITY_DB/continent/code
HTTP_GEOIP_CITY_COUNTRY_CODE CITY_DB/country/iso_code
HTTP_GEOIP_CITY_COUNTRY_NAME CITY_DB/country/names/en
HTTP_GEOIP_REGION CITY_DB/subdivisions/0/iso_code
HTTP_GEOIP_LATITUDE CITY_DB/location/latitude
HTTP_GEOIP_LONGITUDE CITY_DB/location/longitude

Setup Database File Path

In ADC WebAdmin, configure the database location: Navigate to Configuration > Server > General > set MaxMind GeoIP DB to the database path.

IP2Location Database

You can download the IP2Location Database from their website and configure the IP2Location DB File Path in the IP2Location DB section.

This example test case is to redirect all US IP to /en/ site. In Rewrite tab under example.com ADC virtualhost, Rewrite Control → Set Enable Rewrite to Yes.

Then added the following to Rewrite Rules:

RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^US$
RewriteRule ^.*$ https://example.com/en [R,L]

Visiting example.com through US IP should redirect to https://example.com/en successfully.

  • Admin
  • Last modified: 2019/08/27 19:22
  • by Jackson Zhang