Archives quotidiennes :

Géolocalisation avec Apache

world-regions-300px

Voici comment mettre en place une redirection vers un site internet en utilisant la géolocalisation directement dans un VirtualHost avec Apache.

1 – Installation des paquets :

Nous faisons cette manipulation sous Debian avec Apache 2.4 déjà installé. Il faut donc rajouter les modules permettant de gérer GeoIP :

# apt-get install libapache2-mod-geoip geoip-database-contrib
  • libapache2-mod-geoip permet de rendre apache compatible avec la géolocalisation
  • geoip-database-contrib permet de mettre à jour la base de correspondance IP <-> Pays

2 – Activation des modules :

L’activation des modules est simple et ne prend qu’une seule ligne :

# a2enmod rewrite geoip

Nous pouvons également mettre à jour la base d’IP comme ceci :

# geoip-database-contrib_update
Downloading: http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
Downloading: http://geolite.maxmind.com/download/geoip/database/GeoIPv6.dat.gz
Downloading: http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
Downloading: http://geolite.maxmind.com/download/geoip/database/GeoLiteCityv6-beta/GeoLiteCityv6.dat.gz
Downloading: http://geolite.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz
Downloading: http://geolite.maxmind.com/download/geoip/database/asnum/GeoIPASNumv6.dat.gz

Il faut savoir que le paquet installe également une tâche cron qui permet de maintenir la base à jour régulièrement. A savoir : 0 4 10 * *, soit à 4h00 du matin chaque 10 du mois.

3 – Configuration :

Nous réglons ensuite le module GeoIP pour qu’il aille chercher la bonne base d’IP en éditant le fichier de configuration du module pour Apache :

# vim /etc/apache2/mods-enabled/geoip.conf

Il suffit de dé-commenter la ligne avec le paramètre GeoIPDBFile pour lui indiquer le nouveau chemin :

<IfModule mod_geoip.c>
 GeoIPEnable On
 GeoIPDBFile /var/lib/geoip-database-contrib/GeoIP.dat
</IfModule>

Nous terminons par le vhost que l’on souhaite modifier en intégrant ces règles qui permettent de rediriger les IP Françaises vers un site Français et celles qui ne sont pas françaises vers le reste du monde :

RewriteEngine on
 RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(FR)$
 RewriteRule ^(.*)$ http://world.site.com/ [L]
 RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(FR)$
 RewriteRule ^(.*)$ http://france.site.fr/ [L]

Et pour finir, ne pas oublier un contrôle de configuration apache, puis un redémarrage du service qui va activer les modules et appliquer la nouvelle configuration :

# service apache2 restart