NGinx – Protéger son site avec une authentification simple HTTP
Date: 25/01/2012 | Catégories: Open-source,Planet-libre,Systeme,Web | Tags: auth,http,login,mot de passe,nginx,password
Un petit billet "flash express" pour protéger son site (ou un répertoire de son site) avec une authentification simple (type login/password) sur un serveur NGinx.
Pré-requis
Il faut disposer d'un serveur NGinx bien configuré (par exemple en utilisant ce script d'auto-installation pour Debian ou Ubuntu) puis du logiciel htpasswd que l'on peut installer sous Debian/Ubuntu avec la commande suivante:
[cc]
sudo apt-get install apache2-utils
[/cc]
Création du fichier .htpasswd
Ce fichier va contenir, de manière chiffré, le mot de passe associé à l'utilisateur. La commande à utiliser pour créer ce fichier est la suivante:
[cc]
sudo htpasswd -c /var/www/.htpasswd nicolargo
New password:
Re-type new password:
Adding password for user nicolargo
[/cc]
Ou:
- -c est une option pour créer le fichier (sans cette option, le couple login/password est ajouté)
- /var/www/ est l'emplacement du fichier .htpasswd. Le contenu du répertoire /var/www/ (donc la racine de mon site Web) sera donc protégée par le couple login/password
- nicolargo est le nom de l'utilisateur (login)
- ilfaut sasir deux fois le mot de passe (password)
Configuration de NGinx
Pour que NGinx puisse gérer les fichiers .htpasswd, il faut ajouter modifier la configuration de son site (à adapter selon votre configuration):
[cc]
server {
listen 80;
server_name localhost;
root /var/www;
# Static
location / {
index index.html index.htm;
auth_basic "Login";
auth_basic_user_file /var/www/.htpasswd;
}
# Protect hidden file to read/write access
location ~ /\. {
deny all;
}
}
[/cc]
Après avoir rechargé la configuration:
[cc]
sudo /etc/init.d/nginx restart
[/cc]
Il ne reste plus qu'à...
Tester
En pointant un navigateur sur le site en question, une bannière d'authentification va apparaitre:
Note sur la sécurité
Attention de ne PAS utiliser se mécanisme pour protéger des informations sensibles. En effet il n'y a pas de chiffrement des données lors de la transmission en HTTP entre le navigateur et le serveur et le fichier .htpasswd peut être récupéré en cas de corruption de votre serveur...