Restriction de l'accès à votre site avec Nginx
Filtrage IP, protection par mot de passe et blocage de requêtes — le tout au même endroit.
Contrôler qui peut accéder à quoi sur votre serveur est un aspect fondamental de la sécurité d'une application web. Nginx vous offre une boîte à outils solide : règles simples par adresse IP, HTTP Basic Auth, politiques d'accès combinées, et bien plus encore.
Conseil
Sur les VPS et les serveurs dédiés, vous avez un contrôle total sur votre configuration Nginx et pouvez appliquer n'importe laquelle des méthodes décrites ci-dessous.
1. Bloquer l'accès aux répertoires sensibles
Pour interdire l'accès direct aux répertoires comme .svn qui n'ont rien à faire en public :
location ~ /.svn/ {
deny all;
}
2. Contrôle d'accès par adresse IP
Utilisez allow et deny pour créer une liste blanche sur des sections spécifiques de votre site :
location /server-status {
allow 111.111.111.111;
allow 11.11.11.11;
deny all;
}
Seules les adresses IP listées sont autorisées — toutes les autres sont refusées.
3. Protection par mot de passe (HTTP Basic Auth)
Besoin d'afficher une invite de connexion devant une section privée ? Voici la méthode la plus directe :
location /admin/ {
auth_basic "Enter password to access";
auth_basic_user_file /etc/nginx/basic.auth;
}
4. Protection combinée : liste blanche IP + mot de passe
La directive satisfy any laisse passer un visiteur s'il réussit l'une ou l'autre des vérifications — adresse IP de confiance ou identifiants valides. Pratique pour permettre à votre équipe d'accéder sans mot de passe, tout en accordant l'accès aux autres personnes qui le connaissent :
location /admin/ {
satisfy any;
allow 111.111.111.111;
allow 11.11.11.11;
deny all;
auth_basic "Enter password to access";
auth_basic_user_file /etc/nginx/basic.auth;
}
Nos produits et services
5. Retourner une 404 pour les fichiers statiques manquants
Évitez que Nginx ne divulgue des informations sur la structure de votre serveur en renvoyant une 404 propre pour tout fichier statique qui n'existe pas sur le disque :
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
try_files $uri =404;
}
6. Redirection en fonction de l'adresse IP
Vous pouvez rediriger les visiteurs de manière conditionnelle selon l'origine de leur requête :
location / {
if ($remote_addr != 111.111.111.111) {
return 301 https://$host$request_uri;
}
}
Toutes les requêtes provenant d'une adresse autre que
111.111.111.111seront redirigées vershttps://$host$request_uri.
7. Protection contre le brute force avec iptables
Pour une couche de défense supplémentaire au niveau réseau, vous pouvez utiliser iptables afin de bloquer temporairement les adresses IP qui inondent votre serveur de requêtes :
iptables -A INPUT -p tcp --syn --dport 80 -i eth0 -m state --state NEW \
-m recent --name bhttp --set
iptables -A INPUT -p tcp --syn --dport 80 -i eth0 -m state --state NEW \
-m recent --name bhttp --update --seconds 120 \
--hitcount 360 -j DROP
iptables -A INPUT -p tcp --syn --dport 80 -i eth0 -j ACCEPT
Cette règle bloque toute adresse IP qui ouvre plus de 360 nouvelles connexions en l'espace de 120 secondes.
Appliquer vos modifications
Après avoir modifié la configuration Nginx, rechargez le service pour appliquer vos changements sans interrompre les connexions actives :
systemctl reload nginx
# ou
service nginx reload
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 !