Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
litespeed_wiki:lslb:geoip [2019/08/27 19:17]
Jackson Zhang
litespeed_wiki:lslb:geoip [2020/11/18 15:43] (current)
Lisa Clarke Redirect to new Documentation Site
Line 1: Line 1:
-====== How to enable GEOIP on ADC? ====== +~~REDIRECT>​https://​docs.litespeedtech.com/products/lsadc/settings/~~
-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  [[https://​www.ip2location.com/​|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.  +
- +
-{{:​litespeed_wiki:​lslb:​adc-geoip-1.png?​800|}} +
- +
-===== 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 [[https://github.com/​maxmind/​mod_maxminddb|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 +
-   +
-{{ :​litespeed_wiki:​cache:​common:​litespeed-geoip2-variables-e1.png?​800 |}} +
- +
-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 +
-{{ :​litespeed_wiki:​cache:​common:​litespeed-geoip2-variables-e2.png?​800 |}}   +
-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 +
- +
-{{ :​litespeed_wiki:​cache:​common:​litespeed-geoip2-variables-e4-1.png?​600 |}} +
- +
-It will show on the ''​phpinfo.php''​ page as: +
-  _SERVER["​HTTP_GEOIP_CITY"​] Montville +
-  _SERVER["​HTTP_GEOIP_POSTAL_CODE"​] 07045 +
-  _SERVER["​HTTP_GEOIP_CITY_CONTINENT_CODE"​] NA +
-  _SERVER["​HTTP_GEOIP_CITY_COUNTRY_CODE"​] US +
-  _SERVER["​HTTP_GEOIP_CITY_COUNTRY_NAME"​] United States +
-  _SERVER["​HTTP_GEOIP_REGION"​] NJ +
-  _SERVER["​HTTP_GEOIP_LATITUDE"​] 40.90490 +
-  _SERVER["​HTTP_GEOIP_LONGITUDE"​] -74.36460 +
- +
-{{ :​litespeed_wiki:​cache:​common:​litespeed-geoip2-variables-e4-2.png?​400 |}} +
- +
-=== 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 [[https://​www.ip2location.com/|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 /ensite. +
-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. +
-{{:​litespeed_wiki:​lslb:​adc-geoip-2-vh-rewriterules.png?​800|}} +
- +
  • Admin
  • Last modified: 2019/08/27 19:17
  • by Jackson Zhang