Filtrage du trafic dans Nginx avec GeoIP
Guide pas à pas pour restreindre l'accès à votre site par pays à l'aide du module GeoIP dans Nginx.
Lorsque vous utilisez Nginx sur un VPS ou un serveur dédié, il peut être nécessaire de restreindre l'accès à votre site par pays. Cela est possible grâce au module Nginx GeoIP.
Installer les paquets
Pour installer le module GeoIP sur votre serveur, exécutez les commandes suivantes selon votre système d'exploitation.
Debian/Ubuntu
sudo apt-get install nginx-module-geoip
CentOS
yum install nginx-module-geoip
Si votre version de nginx ne dispose pas de /etc/nginx/modules-enabled, le module peut ne pas être chargé automatiquement.
Dans ce cas, ajoutez les lignes suivantes tout au début de /etc/nginx/nginx.conf (en dehors des blocs http, server et events) :
load_module modules/ngx_http_geoip_module.so;
load_module modules/ngx_stream_geoip_module.so;
Puis exécutez :
nginx -s reload
Mettre à jour la base de données GeoIP
Pour mettre à jour la base de données GeoIP, exécutez les commandes suivantes :
mv /usr/share/GeoIP/GeoIP.dat /usr/share/GeoIP/GeoIP.dat_bak
cd /usr/share/GeoIP/
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gunzip GeoIP.dat.gz
Vérifier la compilation de Nginx avec le module GeoIP
Après la mise à jour de la base de données GeoIP, assurez-vous que Nginx a été compilé avec l'option --with-http_geoip_module. Pour cela, utilisez la commande suivante :
nginx -V
Si Nginx n'a pas été compilé avec l'option requise, vous devrez effectuer la compilation du module Nginx.
Nos produits et services
Configurer Nginx pour restreindre l'accès par pays
Dans le répertoire des fichiers de configuration Nginx, créez un fichier nommé block.map.include avec le contenu suivant :
geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $allowed_country {
default yes;
CN no;
VN no;
TW no;
}
Dans cet exemple, l'accès au site est bloqué pour les utilisateurs de Chine, du Vietnam et de Taïwan.
Pour n'autoriser l'accès qu'aux utilisateurs de certains pays, modifiez la configuration comme suit :
geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $allowed_country {
default no;
RU yes;
UA yes;
}
Dans cet exemple, le site sera accessible uniquement aux utilisateurs de Russie et d'Ukraine.
Modifier la configuration Nginx
Dans le fichier /etc/nginx/nginx.conf, ajoutez la ligne suivante dans la section http :
include include/block.map.include;
Puis, dans la section server de la configuration de votre hôte, ajoutez le bloc suivant :
if ($allowed_country = no) {
return 404;
}
Appliquez les modifications en redémarrant Nginx :
nginx -s reload
Attention
MaxMind ne prend plus en charge l'ancien format de base de données .dat et a supprimé la possibilité de le télécharger librement. L'accès aux fichiers est désormais soumis à une authentification et à l'achat d'une licence. Le nouveau format de base de données .mmdb est maintenant utilisé.
Aide
Une question ou besoin d'un coup de main ? Écrivez-nous via le système de tickets — nous sommes toujours là pour vous aider !