Nginx : comment créer un Virtual Host (pour un site web)

J’ai déjà parlé des avantages d’avoir un serveur web nginx dans un autre article et je vous montre comment l’utiliser ici.

Sous linux, si vous n’avez pas nginx vous devez l’installer avec apt :

sudo apt-get install nginx

1. Créer le répertoire racine du site

Vous devez créer le répertoire racine qui contiendra les fichiers de votre site (la coutume dit de le créer dans /var/www/) Par exemple :

sudo mkdir -p /var/www/monsite.com/public_html

Le dossier public_html sera le dossier racine du site.

On créera aussi un fichier de test : index.html avec le traditionnel « It Works ! » :

sudo echo "<h1<It Works ! </h1>" > /var/www/monsite.com/public_html/index.html

2. Donner les bonnes permissions

Il est très important de donner les bonnes permissions pour ne pas se retrouver à avoir des problèmes d’accès aux fichiers par l’utilisateur courant (vous) ou par www-data et le groupe www-data parce que le serveur web a les mêmes permissions qu’on donne au groupe www-data et à l’utilisateur du même nom (puisque le serveur web utilise l’user www-data).

On utilisera donc cette commande pour que le dossier public_html appartienne à l’utilisateur www-data et le groupe www-data :

sudo chown -R www-data:www-data /var/www/example.com/public_html

Et on affectera les permissions 755 à /var/www pour avoir :

  • Un accès en lecture, en écriture et en exécution à l’utilisateur www-data que nginx utilise (d’où le 7)
  • Un accès en lecture et exécution (sans écriture) au groupe et aux autres utilisateurs (d’où le 5) : cela permettra à tout le monde d’accéder aux fichiers sans le droit de les changer
sudo chmod 755 /var/www

3. Créer le fichier de définition du Virtual Host

Nginx définit les Virtual Host (Virtual Host Server Block est son appellation complète dans nginx) par des fichiers contenus dans /etc/nginx/sites-available/

Pour notre site, on créera et éditera le fichier exampe.com avec nano (ou vim si vous l’avez déjà installé) :

sudo nano /etc/nginx/sites-available/example.com

Qui contiendra :

server {
        listen   80; ## écouter le port 80 en ipv4
        #listen   [::]:80 écouter le port 80 ipv6only=on; ## écoute pour ipv6
        #location /static { 
        #    autoindex on
        #    alias /var/www/example.com/static_root
        #}

        root /var/www/example.com/public_html; # le dossier racine
        index index.html index.htm;

        # Le site sera accessible par http://localhost
        server_name example.com;
}

Explications :

  • root : dossier racine
  • location : fonctionnalité intéressante de nginx qui permet de spécifier un autre dossier où chercher les fichiers pour des sous-urls spécifiques. Vous pouvez décommenter cette partie pour accéder aux fichiers statiques dans /var/www/example.com/static_root par l’url http://example.com/static/
  • index : spécifier le fichier qui sera appelé quand l’url est un dossier
  • server_name : le nom de votre serveur sur internet ou sur votre réseau local/intra

Finalement, il faut activer le site tout simplement en créant un lien symbolique du fichier dans sites-enabled

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com

4. Redémarrer nginx

sudo service nginx restart

Et voilà, maintenant votre site est à 100% fonctionnel et vous utilisez nginx qui est l’incarnation de la rapidité et qui sous-consomme la mémoire par rapport aux autres alternatives, en plus d’offrir des fonctionnalités de cache terriblement efficaces qu’on verra dans un autre article.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *