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.
set ''Enable GeoLocation Lookup'' to ''Yes''
First, you should set Enable GeoLocation Lookup
to Yes
. Without setting this, ADC won't look up GEOIP.
Download and Configure GEOIP Database Path
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
It will show on the phpinfo.php
page as:
_SERVER["MyTest_COUNTRY_CODE"] US
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
It will show on the
phpinfo.php
page as:
_SERVER["MyTest2_COUNTRY_CODE"] US
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.
Testing
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.