NGinx – Protéger son site avec une authentification simple HTTP

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:

sudo apt-get install apache2-utils

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:

sudo htpasswd -c /var/www/.htpasswd nicolargo

New password:

Re-type new password:

Adding password for user nicolargo

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):

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;

}

}

Après avoir rechargé la configuration:

sudo /etc/init.d/nginx restart

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...

Vus : 1296
Publié par Nicolargo : 402