Nginx Auth · 4 min read · Jan 23, 2026

Authentification HTTP de base avec Nginx

Ce tutoriel montre comment vous pouvez utiliser l’authentification HTTP de base avec Nginx pour protéger par mot de passe des répertoires sur votre serveur ou même un site Web entier. C’est l’équivalent Nginx de l’authentification HTTP de base sur Apache avec .htaccess /.htpasswd.

1 Remarque Préliminaire

J’utilise le site www.example.com ici avec le répertoire racine /var/www/www.example.com/web/ et le fichier de configuration vhost Nginx /etc/nginx/sites-enabled/www.example.com.vhost. Le répertoire que je souhaite protéger par mot de passe est /var/www/www.example.com/web/test/.

2 Création du Fichier de Mot de Passe

Nous avons besoin d’un fichier de mot de passe où les utilisateurs qui devraient pouvoir se connecter sont listés avec leurs mots de passe (sous forme cryptée). Pour créer un tel fichier de mot de passe, nous pouvons soit utiliser l’outil htpasswd d’Apache, soit utiliser le script Python de http://trac.edgewall.org/browser/trunk/contrib/htpasswd.py.

2.1 Utilisation de la Commande htpasswd d’Apache

Si vous souhaitez utiliser la commande htpasswd d’Apache, vérifiez si elle existe sur votre système :

which htpasswd
root@server1:~# which htpasswd  
/usr/bin/htpasswd  
root@server1:~#

Si vous obtenez une sortie comme celle ci-dessus, tout va bien - htpasswd est déjà installé. Si la commande ne retourne aucune sortie, htpasswd n’existe pas sur votre système, et vous devez l’installer. Sur Debian/Ubuntu, il fait partie du paquet apache2-utils que nous pouvons installer comme suit :

apt-get -y install apache2-utils

Je veux maintenant créer le fichier de mot de passe /var/www/www.example.com/.htpasswd et y stocker l’utilisateur falko (vous pouvez donner au fichier de mot de passe n’importe quel nom que vous aimez - il n’est pas nécessaire de l’appeler .htpasswd ; je l’ai simplement nommé .htpasswd car c’est ainsi que les fichiers de mot de passe sont nommés sous Apache) :

htpasswd -c /var/www/www.example.com/.htpasswd falko

On vous demandera un mot de passe pour l’utilisateur falko. Veuillez noter que l’option -c fait que le fichier est créé à partir de zéro ; s’il n’existait pas auparavant, il sera créé ; s’il existait auparavant, il sera écrasé par un nouveau, et tous les utilisateurs de l’ancien fichier seront perdus ! Par conséquent, si vous souhaitez ajouter un autre utilisateur sans supprimer tous les utilisateurs existants, utilisez la commande htpasswd sans l’option -c :

htpasswd /var/www/www.example.com/.htpasswd till

La dernière commande ajoute l’utilisateur till à /var/www/www.example.com/.htpasswd afin que nous ayons maintenant les utilisateurs falko et till dans celui-ci.

2.2 Utilisation du Script Python htpasswd.py

Si vous ne souhaitez pas ou ne pouvez pas utiliser la commande htpasswd d’Apache, vous pouvez utiliser le script Python de http://trac.edgewall.org/browser/trunk/contrib/htpasswd.py.

Nous le téléchargeons dans /usr/local/bin et le rendons exécutable comme suit :

cd /usr/local/bin  
wget http://trac.edgewall.org/export/14464/trunk/contrib/htpasswd.py  
chmod 755 /usr/local/bin/htpasswd.py

Je veux maintenant créer le fichier de mot de passe /var/www/www.example.com/.htpasswd et y stocker l’utilisateur falko (vous pouvez donner au fichier de mot de passe n’importe quel nom que vous aimez - il n’est pas nécessaire de l’appeler .htpasswd ; je l’ai simplement nommé .htpasswd car c’est ainsi que les fichiers de mot de passe sont nommés sous Apache) :

htpasswd.py -c -b /var/www/www.example.com/.htpasswd falko falkossecret

Veuillez remplacer falkossecret par un mot de passe pour l’utilisateur falko. Veuillez noter que l’option -c fait que le fichier est créé à partir de zéro ; s’il n’existait pas auparavant, il sera créé ; s’il existait auparavant, il sera écrasé par un nouveau, et tous les utilisateurs de l’ancien fichier seront perdus ! Par conséquent, si vous souhaitez ajouter un autre utilisateur sans supprimer tous les utilisateurs existants, utilisez la commande htpasswd.py sans l’option -c :

htpasswd.py -b /var/www/www.example.com/.htpasswd till tillssecret

La dernière commande ajoute l’utilisateur till à /var/www/www.example.com/.htpasswd afin que nous ayons maintenant les utilisateurs falko et till dans celui-ci.

3 Configuration de Nginx

Maintenant que nous avons notre fichier de mot de passe en place, nous devons simplement l’ajouter à notre configuration vhost Nginx dans /etc/nginx/sites-enabled/www.example.com.vhost, à l’intérieur du conteneur server {}.

nano /etc/nginx/sites-enabled/www.example.com.vhost

Parce que je veux protéger par mot de passe le répertoire test dans le répertoire racine, j’utilise location /test {} ici (pour protéger par mot de passe l’ensemble du site Web, vous utiliseriez location / {}) :

server {
       listen 80;
       server_name www.example.com example.com;
       root /var/www/www.example.com/web;
[...]  
       location /test {
                auth_basic "Restreint";
                auth_basic_user_file /var/www/www.example.com/.htpasswd;
       }
[...]  
}

Rechargez Nginx ensuite :

service nginx reload

C’est tout ! Vous pouvez maintenant aller dans votre répertoire test dans un navigateur ( http://www.example.com/test), et vous devriez être invité à entrer un nom d’utilisateur et un mot de passe :

Invite d'authentification de base Nginx (.htpasswd).

Si vous entrez le bon nom d’utilisateur et le bon mot de passe, vous aurez accès :

Connexion réussie.

Sinon, vous verrez un message d’erreur 401 Authorization Required :

Autorisation requise Nginx.

4 Liens

À Propos de l’Auteur

Falko Timme est le propriétaire de Timme Hosting (hébergement web nginx ultra-rapide). Il est le principal responsable de HowtoForge (depuis 2005) et l’un des développeurs principaux d’ISPConfig (depuis 2000). Il a également contribué au livre O’Reilly “Administration Système Linux”.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.