+91-903-347-2982   |    +91-987-935-4457   |    contact@serpentcs.com
serpentcs certifications and recognization

Using Apache GeoIP mod redirect or block traffic based on countries geo location

Learn how to configure Apache’s geoip mod
December 6, 2022 by
Using Apache GeoIP mod redirect or block traffic based on countries geo location

Apache's geoip mod in odoo

This configuration explains how to redirect or block web traffic based on the visitor's geographical location by using Apache’s geoip mod.

Apache mod_geoip installation

Assuming that you already have Apache web server installed and running we start by the installation of mod_geoip:

UBUNTU/DEBIAN

# apt-get install libapache2-mod-geoip

Confirm that geoip and rewrite module is enabled:
 

# apache2ctl -M | grep -E "geoip|rewrite"

geoip_module (shared)

rewrite_module (shared)
 

If the above command does not produce any output or only single mod is listed enable missing module with the following linux command:

# a2enmod geoip rewrite
Enabling module geoip.
Enabling module rewrite
.

 

To activate the new configuration, you need to run:

# service apache2 restart

and restart Apache web server to apply the changes:

# service apache2 restart
 

Redirect traffic based on the multiple country geographical location

Now that we have mod_geoip enabled we can edit a relevant site’s configuration file located in /etc/apache2/sites-available/ or corresponding .htaccess file to redirect traffic based on geographical location. In the example below we are going to redirect all incoming traffic from China and India to new URL http://example.com:

RewriteEngine on

RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(CN|IN)$

RewriteRule ^(.*)$ http://example.com/$1 [L]

Please note that if you insert the above configuration into site’s configuration file you well be required to restart your apache web server to apply changes:

# service apache2 reload

Block traffic based on the country geographical location

If you decide to block incoming traffic based on the country's geographical location you can do so by editing a relevant site’s configuration file located in /etc/apache2/sites-available/. The below mod_geoip configuration will block China and India countries:


<Location />

SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry

SetEnvIf GEOIP_COUNTRY_CODE IN BlockCountry

Deny from env=BlockCountry

</Location>
 

Apache reload is required to apply the above changes. Alternatively the the above you can also insert the following lines into your corresponding .htaccess file:
 

SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry

SetEnvIf GEOIP_COUNTRY_CODE IN BlockCountry

Deny from env=BlockCountry

Redirect traffic based on the single country

Here in the example below we are going to redirect all incoming traffic from Singapore to a new URL. You can do so by editing a relevant site’s configuration file located in /etc/apache2/sites-available/.


RewriteEngine on

RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^SG$

RewriteRule ^(.*)$ http://example.com/$1 [L]


Now you will be required to restart your apache web server to apply changes:

# service apache2 reload

If you still have queries while performing the above process of redirecting or blocking traffic from geolocation through GeoIP
Contact us for administrator support our experts are ready to help you.

Appendix

ISO 3166 Country Codes

List of ISO 3166 Country Codes to be used with GeoIP apache module:

A1 - "Anonymous Proxy"

A2 - "Satellite Provider"

O1 - "Other Country"

AD - "Andorra"

AE - "United Arab Emirates"

AF - "Afghanistan"

AG - "Antigua and Barbuda"

AI - "Anguilla"

AL - "Albania"

AM - "Armenia"

AO - "Angola"

AP - "Asia/Pacific Region"

AQ - "Antarctica"

AR - "Argentina"

AS - "American Samoa"

AT - "Austria"

AU - "Australia"

AW - "Aruba"

AX - "Aland Islands"

AZ - "Azerbaijan"

BA - "Bosnia and Herzegovina"

BB - "Barbados"

BD - "Bangladesh"

BE - "Belgium"

BF - "Burkina Faso"

BG - "Bulgaria"

BH - "Bahrain"

BI - "Burundi"

BJ - "Benin"

BL - "Saint Bartelemey"

BM - "Bermuda"

BN - "Brunei Darussalam"

BO - "Bolivia"

BQ - "Bonaire -  Saint Eustatius and Saba"

BR - "Brazil"

BS - "Bahamas"

BT - "Bhutan"

BV - "Bouvet Island"

BW - "Botswana"

BY - "Belarus"

BZ - "Belize"

CA - "Canada"

CC - "Cocos (Keeling) Islands"

CD - "Congo -  The Democratic Republic of the"

CF - "Central African Republic"

CG - "Congo"

CH - "Switzerland"

CI - "Cote d'Ivoire"

CK - "Cook Islands"

CL - "Chile"

CM - "Cameroon"

CN - "China"

CO - "Colombia"

CR - "Costa Rica"

CU - "Cuba"

CV - "Cape Verde"

CW - "Curacao"

CX - "Christmas Island"

CY - "Cyprus"

CZ - "Czech Republic"

DE - "Germany"

DJ - "Djibouti"

DK - "Denmark"

DM - "Dominica"

DO - "Dominican Republic"

DZ - "Algeria"

EC - "Ecuador"

EE - "Estonia"

EG - "Egypt"

EH - "Western Sahara"

ER - "Eritrea"

ES - "Spain"

ET - "Ethiopia"

EU - "Europe"

FI - "Finland"

FJ - "Fiji"

FK - "Falkland Islands (Malvinas)"

FM - "Micronesia -  Federated States of"

FO - "Faroe Islands"

FR - "France"

GA - "Gabon"

GB - "United Kingdom"

GD - "Grenada"

GE - "Georgia"

GF - "French Guiana"

GG - "Guernsey"

GH - "Ghana"

GI - "Gibraltar"

GL - "Greenland"

GM - "Gambia"

GN - "Guinea"

GP - "Guadeloupe"

GQ - "Equatorial Guinea"

GR - "Greece"

GS - "South Georgia and the South Sandwich Islands"

GT - "Guatemala"

GU - "Guam"

GW - "Guinea-Bissau"

GY - "Guyana"

HK - "Hong Kong"

HM - "Heard Island and McDonald Islands"

HN - "Honduras"

HR - "Croatia"

HT - "Haiti"

HU - "Hungary"

ID - "Indonesia"

IE - "Ireland"

IL - "Israel"

IM - "Isle of Man"

IN - "India"

IO - "British Indian Ocean Territory"

IQ - "Iraq"

IR - "Iran -  Islamic Republic of"

IS - "Iceland"

IT - "Italy"

JE - "Jersey"

JM - "Jamaica"

JO - "Jordan"

JP - "Japan"

KE - "Kenya"

KG - "Kyrgyzstan"

KH - "Cambodia"

KI - "Kiribati"

KM - "Comoros"

KN - "Saint Kitts and Nevis"

KP - "Korea -  Democratic People's Republic of"

KR - "Korea -  Republic of"

KW - "Kuwait"

KY - "Cayman Islands"

KZ - "Kazakhstan"

LA - "Lao People's Democratic Republic"

LB - "Lebanon"

LC - "Saint Lucia"

LI - "Liechtenstein"

LK - "Sri Lanka"

LR - "Liberia"

LS - "Lesotho"

LT - "Lithuania"

LU - "Luxembourg"

LV - "Latvia"

LY - "Libyan Arab Jamahiriya"

MA - "Morocco"

MC - "Monaco"

MD - "Moldova -  Republic of"

ME - "Montenegro"

MF - "Saint Martin"

MG - "Madagascar"

MH - "Marshall Islands"

MK - "Macedonia"

ML - "Mali"

MM - "Myanmar"

MN - "Mongolia"

MO - "Macao"

MP - "Northern Mariana Islands"

MQ - "Martinique"

MR - "Mauritania"

MS - "Montserrat"

MT - "Malta"

MU - "Mauritius"

MV - "Maldives"

MW - "Malawi"

MX - "Mexico"

MY - "Malaysia"

MZ - "Mozambique"

NA - "Namibia"

NC - "New Caledonia"

NE - "Niger"

NF - "Norfolk Island"

NG - "Nigeria"

NI - "Nicaragua"

NL - "Netherlands"

NO - "Norway"

NP - "Nepal"

NR - "Nauru"

NU - "Niue"

NZ - "New Zealand"

OM - "Oman"

PA - "Panama"

PE - "Peru"

PF - "French Polynesia"

PG - "Papua New Guinea"

PH - "Philippines"

PK - "Pakistan"

PL - "Poland"

PM - "Saint Pierre and Miquelon"

PN - "Pitcairn"

PR - "Puerto Rico"

PS - "Palestinian Territory"

PT - "Portugal"

PW - "Palau"

PY - "Paraguay"

QA - "Qatar"

RE - "Reunion"

RO - "Romania"

RS - "Serbia"

RU - "Russian Federation"

RW - "Rwanda"

SA - "Saudi Arabia"

SB - "Solomon Islands"

SC - "Seychelles"

SD - "Sudan"

SE - "Sweden"

SG - "Singapore"

SH - "Saint Helena"

SI - "Slovenia"

SJ - "Svalbard and Jan Mayen"

SK - "Slovakia"

SL - "Sierra Leone"

SM - "San Marino"

SN - "Senegal"

SO - "Somalia"

SR - "Suriname"

SS - "South Sudan"

ST - "Sao Tome and Principe"

SV - "El Salvador"

SX - "Sint Maarten"

SY - "Syrian Arab Republic"

SZ - "Swaziland"

TC - "Turks and Caicos Islands"

TD - "Chad"

TF - "French Southern Territories"

TG - "Togo"

TH - "Thailand"

TJ - "Tajikistan"

TK - "Tokelau"

TL - "Timor-Leste"

TM - "Turkmenistan"

TN - "Tunisia"

TO - "Tonga"

TR - "Turkey"

TT - "Trinidad and Tobago"

TV - "Tuvalu"

TW - "Taiwan"

TZ - "Tanzania -  United Republic of"

UA - "Ukraine"

UG - "Uganda"

UM - "United States Minor Outlying Islands"

US - "United States"

UY - "Uruguay"

UZ - "Uzbekistan"

VA - "Holy See (Vatican City State)"

VC - "Saint Vincent and the Grenadines"

VE - "Venezuela"

VG - "Virgin Islands -  British"

VI - "Virgin Islands -  U.S."

VN - "Vietnam"

VU - "Vanuatu"

WF - "Wallis and Futuna"

WS - "Samoa"

YE - "Yemen"

YT - "Mayotte"

ZA - "South Africa"

ZM - "Zambia"

ZW - "Zimbabwe"

 

Are you in need of software to simplify your business operations? We have lots of ready software with us.


Serpent Consulting Services Pvt. Ltd is Odoo Gold Partner providing various Odoo services in more than 175+ countries. Our services include OdooTraining, OdooSupport, Odoo Migration, Odoo Customization, Odoo Implementation, Odoo Integration, Odoo Development, and offshore.

How can Odoo fit into your business? To know more, check our Demo Videos on our YouTube Channel