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

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

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.111 seront redirigées vers https://$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 !

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