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

Hébergement webFonctionne sur des disques NVMe ultra-rapides. Convient aux sites de toute complexité.
Commande
VPSInfrastructure cloud flexible avec accès root complet.
Commande
Serveurs dédiésServeurs physiques pour une performance maximale.
Commande

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 !

Besoin d’aide?Nos ingénieurs vous aideront gratuitement pour n’importe quelle question en quelques minutesNous contacter