Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
litespeed_wiki:lslb:geoip [2019/08/27 19:11] Jackson Zhang created |
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 > General settings** and 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 /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. | + | |
- | {{:litespeed_wiki:lslb:adc-geoip-2-vh-rewriterules.png?800|}} | + | |
- | + |