Sécuriser un site avec une authentification HTTP sous Nginx

Si vous avez besoin d’avoir une zone sécurisée sur un espace web sans vouloir déployer un système de gestion d’utilisateurs, l’authentification HTTP reste un moyen simple et rapide à mettre en place.

Voici la procédure en quelques points pour mettre en place une authentification HTTP avec Nginx sous CentOS 7.


Pour générer un fichier d’utilisateurs .htpasswd propre à une authentification HTTP, il nous faut l’outil du même nom qui est fourni par Apache. On n’a pas besoin d’Apache donc, juste des outils qui vont avec. Sous CentOS :

$ sudo yum install httpd-tools

Ensuite, il suffit de créer un utilisateur dans le répertoire voulu :

$ sudo htpasswd -c /etc/nginx/.htpasswd nom_utilisateur

On renseigne et vérifie le mot de passe.

Pour terminer, dans la configuration Nginx, à l’intérieur d’un server, ajouter :

auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;

Il suffit de tester puis si tout est ok de redémarrer Nginx :

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo systemctl reload nginx

C’est terminé.

Authentification HTTP Nginx
Authentification HTTP Nginx