Mise en place de l'userdir sous Nginx

Un userdir est un accès web aux répertoires d'un utilisateur. Celui-ci peut s'en servir pour mettre en ligne un site web, donner un accès à des fichiers, etc. ... Généralement un userdir est accessible via une url de la forme suivante : http://domaine.tld/~username/.

Dans cet article je vais créer un userdir pour l'usager pierre sur le site web mikael-flora.fr.

Prérequis

Installer Nginx :

apt install nginx

Avoir des usagers sur le serveur, par exemple l'utilisateur pierre :

adduser pierre

Configurer l'userdir sous Nginx

Créer le fichier de configuration du site /etc/nginx/sites-available/mikael-flora.fr :

server {
        listen      80 default_server;
        server_name mikael-flora.fr www.mikael-flora.fr;
        index       index.html index.htm;
        root        /var/www/mikael-flora.fr;

    location ~ ^/~(.+?)(/.*)?$ {
            alias   /home/$1/www$2;
            autoindex   on;
        }
}

Les instructions relatives à l'userdir sont les suivantes :

  • location ~ ^/~(.+?)(/.*)?$ : le bloc location définit le traitement à effectuer sur les requêtes "matchant" l'uri précisée. Ici nous utilisons une expression régulière PCRE pour identifier l'uri (~). L'expression régulière ^/~(.+?)(/.*)?$ signifie tout ce qui commence (^) par les caractères /~. les chaînes de caractères suivantes sont sauvegardées dans deux variables $1 ((.+?) : au minimum un caractère) et $2 ((/.*) : le slash / pouvant être suivi par des caractères, cette dernière variable étant optionnel ?)
  • alias /home/$1/www$2 : La requête web qui match l'expréssion régulière permet d'accéder au répertoire ou au fichier présent dans /home/$1/www$2 ou $1 et $2 sont respectivements la première et la deuxième chaînes de caractères sauvegardées précedemment
  • autoindex on : autorise l'affichage du contenu des répertoires

Pour prendre en compte la configuration :

ln -s /etc/nginx/sites-available/mikael-flora.fr /etc/nginx/sites-enabled/mikael-flora.fr
systemctl restart nginx.service

Utilisation

Les utilisateurs qui voudront profiter de la fonctionnalité, n'auront plus qu'à créer un répertoire www dans leur homedirectory et y placer leurs fichiers. Par exemple pour l'utilisateur pierre :

mkdir ~/www
echo "<html><body>Hello World</body></html> >> ~/www/index.html

Il ne reste plus qu'à se connecter sur http://mikael-flora.fr/~pierre pour accéder au message Hello World.

By @Mikael FLORA in
Tags : #web,