DEV Community

Maxime Guilbert
Maxime Guilbert

Posted on • Edited on

Mettre en place l'authentification sur Nginx

Quand on utilise Nginx, il se peut que l'on veut restreindre l'accès à certaines URL ou chemins. Pour cela, on peut mettre en place une authentification, et c'est ce que l'on va voir aujourd'hui.


Fichier htpasswd

Afin de permettre aux utilisateurs de se connecter, Nginx doit avoir le fichier htpasswd qui va contenir la liste des noms d'utilisateurs et leurs mot de passes avec le format suivant :

user1:password1
user2:password2
...
Enter fullscreen mode Exit fullscreen mode

Les noms des utilisateurs sont en clairs, mais les mots de passe doivent être encryptés avec BCrypt.

Le plus simple pour pouvoir générer ce fichier et d'encoder les mots de passe est de le faire avec l'utilitaire htpasswd.

Installer htpasswd

Cet utilitaire se trouve dans le package apache2-utils, que vous pouvez installer avec les commandes suivantes :

sudo apt-get update
sudo apt-get install apache2-utils
Enter fullscreen mode Exit fullscreen mode

Utiliser htpasswd

La commande se présente sous le format suivant :

htpasswd [option] [chemin fichier] [nom utilisateur]
Enter fullscreen mode Exit fullscreen mode

L'option utile à connaître est -c pour permettre de créer le fichier.

En suite, il ne vous reste qu'à définir chacun des utilisateurs/mot de passe et le tour est joué!

Exemple

# Créer le fichier et ajouter l'utilisateur toto
htpasswd -c /etc/nginx/htpasswd toto

# Ajouter un autre utilisateur
htpasswd /etc/nginx/htpasswd titi
Enter fullscreen mode Exit fullscreen mode

Configurer Nginx

Dans votre configuration Nginx, il vous suffira d'ajouter auth_basic & auth_basic_user_file comme dans l'exemple suivant et votre Nginx est prêt!

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
        auth_basic "Restricted Content";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }
}
Enter fullscreen mode Exit fullscreen mode

J'espère que ça vous aidera! 🍺


Vous voulez me supporter?

Buy Me A Coffee

Top comments (0)