Nginx : installation et configuration

Dans le chapitre précédent, nous avons vu comment installer et configurer Apache2, maintenant nous allons voir comment faire la même chose avec Nginx.

Nginx est une solution « alternative » à Apache2.

Si vous suivez la formation depuis le départ, l’installation de Nginx doit être effectué sur une autre machine virtuel.

Installer Nginx

Dans le terminal (client SSH) de votre serveur Ubuntu entrer la commande ci-dessous pour installer le paquet nginx.

L’installation de nginx est assez simple.

Quelques informations avant de continuer :

  • Par défaut nginx est configuré avec virtualhost qui écoute sur toutes les IP du serveur sur le port 80.
  • L’emplacement des fichiers de ce virtualhost se trouve dans le répertoire /var/www/html.

Pour connaitre la version installée de Nginx utiliser la commande :

nginx -v

Comme on peut le voir sur la capture ci-dessous, nous sommes sur la version 1.18.0 (Ubuntu).

Le (Ubuntu) est très important, car comme vous allez le voir par la suite dans ce cours et si vous avez suivi la partie sur Apache2, la configuration des virtualhosts est « identiques » du fait que le paquet est configuré afin que nginx se configure comme Apache2. Ce qui n’est pas le cas, si l’on fait une installation directe depuis les sources nginx.

Premier test de votre serveur Nginx

Maintenant que Nginx est installé, je vous propose que l’on regarde à quoi ressemble la page d’index d’installation, ceci va aussi permettre de vérifier que le serveur fonctionne correctement.

Depuis un navigateur, entrer l’adresse IP du serveur (http://192.168.X.Y).

Si tout fonctionnement correctement, vous devriez arriver sur la page Welcome to Nginx.

Pour aller voir la page sur le serveur, depuis la console, aller dans le dossier /var/www/html et afficher le contenu.

Maintenant que vous savez où l’on met les fichiers HTML, créer un page test.html avec le contenu que vous souhaitez en utilisant nano.

Voici le code ma page :

Correction en vidéo :

Gérer le service Nginx

Voici la liste des commandes à utiliser pour gérer le service Nginx sur votre serveur Ubuntu  :

La configuration de Nginx

Maintenant que vous avez commencé à apprivoiser Nginx, nous allons nous attaquer à la configuration.

Ce qui suit au niveau de la configuration est valable pour une installation de Nginx, qui a été effectué sur Ubuntu et avec les paquets configurés pour Ubuntu.

Pour les installations depuis les paquets depuis le dépôt Nginx, je vous invite à lire ce tutoriel : Ubuntu : installer un serveur Web – NGINX / PHP / MariaDB

Si vous suivez cette formation depuis le début et que vous avez lu la partie sur Apache2, vous allez voir qu’il y a beaucoup de similitude.

Où trouver les fichiers de configuration de Nginx

Sur Ubuntu, vous trouverez la configuration de Nginx, dans le dossier /etc/nginx.

nginx config files

Maintenant que vous savez où se trouve les différents fichiers de configuration de Nginx, on va passer en revu les différents dossiers et fichiers.

  • conf.d/ : par défaut ce dossier est vide, il peut contenir des fichiers de configuration qui seront automatiquement chargés lors du rechargement ou (re)démarrage du service nginx.
  • fastcgi.conf : contient principalement des paramètres pour les programmes fastcgi avec les variable d’environnement.
  • fastcgi_params : à peu près la même utilité que le fichier fastcgi.conf
  • koi-utf / koi-win : fichier de mappage de caractères
  • mime.types : liaison mime type <-> extensions
  • modules-availables/ et modules-enables/ : dossier qui permet de gérer les modules complémentaires
  • nginx.conf : contient la configuration principale du serveur Nginx
  • proxy_params : contient les paramètres qui peuvent être passé dans la configuration en cas d’utilisation de Nginx en tant que reverse proxy
  • scgi_params : contient les paramètres qui peuvent être passé dans la configuration en cas d’utilisation de Nginx pour l’utilisation de scgi
  • sites-available/ et sites-enabled/ : dossiers qui va contenir la configuration des virtualhosts et les liens symboliques pour l’activation.
  • snippets/ : contient des morceaux de configuration
  • uwsgi_params : contient les paramètres qui peuvent être passé dans la configuration en cas d’utilisation de Nginx pour l’utilisation de uwsgi
  • win-utf : fichier de mappage de caractères

Nginx et les  dossiers *-available et *-enabled

On retrouve le même fonctionnement que pour Apache2, cependant ces dossiers sont présents seulement avec les paquets Ubuntu, si les paquets sont installés depuis le dépôt officiel, ils ne sont pas présents.

Je ne vais pas représenter le fonctionnement dans ce chapitre (voir le chapitre précédent).

Les virtualhosts

Si vous suivez cette formation depuis le départ, j’en ai déjà parlé à plusieurs reprises, je ne vais donc pas redéfinir les virtualhosts.

Comme Apache2, il est possible de configurer les virtualhosts de plusieurs manières :

  • IP
  • Port
  • Nom

Virtualhost par défaut

La configuration du virtuahost par défaut se trouve dans le fichier default qui est dans le dossier /etc/nginx/sites-available.

On va aller voir ce qui se trouve dans le fichier avec nano.

nano /etc/nginx/sites-available/default

Ici je n’utilise sudo pour ouvrir le fichier, car je veux seulement le consulter (lire).

Comme vous pouvez le voir, le fichier de configuration contient beaucoup de commentaire pour nous aider dans la configuration.

Je vais maintenant vous expliquer la configuration.

LigneExplication
server {Cette instruction serveur à déclarer la configuration d’un virtualhost, elle est fermé avec } à la fin de la configuration
listen 80 default_server;
listen [::]:80 default_server;
J’explique les deux lignes en même en temps car elles font la même chose pour le protocole IPv4 et IPv6.
Ici on indique que le virtualhost écoute sur toute les IP sur le port 80. Le paramètre default_server permet d’indiquer que c’est le virtualhost par défaut si aucune correspondance est trouvé.
root /var/www/html;Emplacement contenant les fichiers du site
index index.html index.htm index.nginx-debian.html;Les différents fichiers d’index possible
server_name _;URL du virtualhost, dans celui par défaut on accepte toutes les connexions.
location / {
try_files $uri $uri/ =404;
}
Bloque qui détermine le comportement générale du serveur web par rapport à l’URL
}Fermeture du bloque qui détermine le virtualhost

Maintenant que l’on a vu comment est configuré le virtualhost par défaut, nous allons voir comment créer notre virtualhost.

Créer un virtualhost

On va commencer par créer le dossier qui va contenir notre site Internet.

sudo mkdir /var/www/formation-nginx

Dans le dossier, créer un fichier index.html avec le contenu de votre choix.

Pour la création du virtualhost sur Nginx, nous allons partir d’un fichier vierge, car le fichier par défaut contient trop de commentaire.

On va commencer par se placer dans le dossier qui contient les fichiers de déclaration des virtualhosts

cd /etc/nginx/sites-available

Ensuite on va utiliser nano

sudo nano

Vous trouverez ci-dessous, la configuration du virtualhost, changer la directive server_name en fonction de votre environnement et root.

Après avoir configuré le virtualhost, sauvegarder le fichier (ctrl+x) et nommer le fichier du virtualhost.

nginx new virtualhost

Normalement, vous devez avoir le fichier de configuration dans le dossier comme ci-dessous :

Maintenant que le virtualshost est configuré, il faut l’activer en créant un lien symbolique dans le dossier /etc/nginx/sites-enable.

Pour créer le lien symbolique, utiliser la commande ci-dessous en adaptant à votre fichier de configuration :

sudo ln -s /etc/nginx/sites-available/formation-nginx /etc/nginx/sites-enabled/

Si on se place dans le dossier /etc/nginx/sites-enabled/, on peut voir le lien.

Avant de recharger la configuration de Nginx, on va utiliser la commande ci-dessous pour tester la configuration et s’assurer qu’elle est bonne :

sudo nginx -t

Si la configuration est OK, on peut recharger les configurations de Nginx afin que notre nouveau virtualhost soit actif :

sudo systemctl reload nginx

On peut maintenant tester notre nouveau site.

Si vous êtes en local, ajouter un enregistrement dans le fichier host de système d’exploitation :

192.168.1.47 formation-nginx.mon-domaine.local

Depuis un navigateur entrer l’url du virtualhost et vérifier que votre page s’affiche.

Vous savez maintenant comment créer un virtualhost séparé pour héberger un site Internet.

Les modules

Je vais maintenant aborder les modules assez rapidement, car si vous avez suivi cette formation depuis le début, vous avez vu que sur Apache2, on peut les activer / désactiver de la même manière que pour un virtualhost.

Sur Nginx, c’est totalement différent, il existe deux dossiers modules-available et modules-enabled, qui permettent principalement le chargement des fichiers de configuration des modules.

Pour ce qui est de leur installation, il est souvent nécessaire de les télécharger et de les compiler par vous-même.

Vous trouverez une liste de modules disponible sur le site Nginx : NGINX 3rd Party Modules | NGINX

Les fichiers .htaccess

Pour faire simple, c’est fichier ne serve à rien sur Nginx, ils ne sont pas interprète.

Si vous avez des règles de réécriture par exemple à mettre en place, elles doivent directement être placer dans la configuration du virtualhost.

La gestion étant différente, il est nécessaire d’adapter les règles à Nginx.

Les fichiers de logs

Dernier point de ce chapitre, les fichiers de logs sur Nginx, comme sur Apache2, il y a deux types de fichiers de log qui vont stocker les logs de visites et le second les erreurs.

Par défaut, les fichiers de logs Nginx sont stockés dans l’emplacement suivant : /var/log/nginx/

Comme on peut le voir sur la capture ci-dessous, on retrouve nos deux types de fichiers de log :

Il est possible de configurer pour chaque virtualhost des fichiers différents en ajoutant les lignes suivantes dans sa configuration :

 access_log /var/log/nginx/vhost_name_access.log  main;
 error_log /var/log/nginx/vhost_name_error.log  warn;

La rotation des logs est assurée par une tache planifiée (cron) qui est disponible à ‘lemplacement suivant : /etc/cron.daily/logrotate.

Pour trouver la configuration complète un jeu de piste dans les dossiers et fichiers est à réaliser pour trouver la configuration de rotation des logs au niveau nginx.


Vous avez maintenant les connaissances nécessaires pour débuter avec Nginx.

Nous allons maintenant passer à l’installation de PHP et à l’intégration de celui-ci sur nos serveur Web.