This tutorial assumes you have magento and nginx installed
Install geoip module and database:
Update apt db
apt update
Then:
sudo apt-get install libgeoip1 libnginx-mod-http-geoip geoip-database -y
Update GeoIP databases:
cd /usr/share/GeoIP
mv GeoIP.dat GeoIP.dat.bak
curl -O https://dl.miyuru.lk/geoip/maxmind/country/maxmind.dat.gz
gunzip maxmind.dat.gz
mv maxmind.dat GeoIP.dat
curl -O https://dl.miyuru.lk/geoip/maxmind/city/maxmind.dat.gz
mv GeoIPCity.dat GeoIPCity.dat.bak
> if cannot stat 'GeoIPCity.dat': No such file or directory then ignore and continue
gunzip maxmind.dat.gz
mv maxmind.dat GeoIPCity.dat
Inside http block add following lines
vi /etc/nginx/nginx.conf
geoip_country /usr/share/GeoIP/GeoIP.dat;
geoip_city /usr/share/GeoIP/GeoIPCity.dat;
Also in http block add following
replace example and sub url with your own :
map $geoip_country_code $my_geo_servers { default www.example.com/en/; DE www.example.com/de/; CH www.example.com/ch/; }
at /etc/nginx/sites-available/default file or your virtualhost file add inside location / block following:
if ($http_cookie !~ "country=set") {
add_header Set-Cookie "country=set;Max-Age=31536000";
rewrite ^ $scheme://$my_geo_servers break;
}
PS! Cookie is needed to avoid redirect loop in magento