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
...
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
Utiliser htpasswd
La commande se présente sous le format suivant :
htpasswd [option] [chemin fichier] [nom utilisateur]
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
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;
}
}
J'espère que ça vous aidera! 🍺
Top comments (0)