Section « server »
Une des principales sections que l’on ajoute aux fichiers de configuration de Nginx que l’on enregistre dans le dossier « sites-available » est « server ».
Cela permet de configurer un serveur virtuel. Ce serveur virtuel des règles propres à un domaine (ou en langage simplifié, un site internet).
C’est vraiment bien 😃 ! Car grâce aux serveurs virtuels, nous pouvons gérer plusieurs sites internet avec un seul serveur physique.
Dans un premier temps, nous allons vérifier que nous sommes bien dans le dossier « sites-available ».
cd /etc/nginx/sites-available/
Ouvrez le fichier « monsite » que nous avons créé dans la leçon sur les dossiers « sites-available » et « sites-enabled ».
nano monsite
Il est normalement vide 💨.
Ajouter la section « server »
Nous allons ajouter la section server{}
dans notre fichier.
section {
}
Directive : listen (server)
La directive listen
definit l’adresse IP et le port sur lequel le serveur doit écouter.
Nous configurons un serveur web pour des sites internet. Pour l’IP on mettra donc 0.0.0.0 (adresse IP générique) pour que les sites soient accessibles par tout le monde. Pour le port on mettra 80 qui le port standard pour les requêtes http et par conséquent pour les sites internet.
Insérer 0.0.0.0 est optionnel dans Nginx. Si nous n’indiquons aucun IP, il comprendra automatiquement qu’il faut utiliser l’adresse IP générique (0.0.0.0)
section {
listen 80; # Équivalent 0.0.0.0:80
}
Directive : server_name (server)
L’instruction server_name
nous permet de signaler le nom de domaine correspondant à notre propre site internet.
Ainsi si une requête est envoyée par le client via un navigateur web, Nginx va vérifier si le nom de domaine reçu est bien celui indiqué dans server_name
.
Si c’est le cas, il va servir les fichiers qui permettront de générer le site. Sinon il passera à une autre section server
, vérifiera le server_name
et ainsi de suite.
S’il ne trouve aucune correspondance (si aucun serveur virtuel n’a été défini), Nginx renverra une erreur « HTTP 404 Not Found ».
Voici une image qui illustre ce que nous venons de dire, mais qui ne reflète la configuration de notre exercice.
Pour l’instant, nous n’allons rien y mettre, car nous n’avons pas de nom de domaine. Mais nous y reviendrons plus tard, car cette directive server_name
est très importante.
Je vous propose d’y insérer la directive pour ne pas l’oublier plus tard, mais en la commentant. Ainsi, Nginx ne le prendre pas en compte.
Pour commenter une directive Nginx, ajouter le caractère « # » au début de la ligne.
section {
listen 80; # Équivalent 0.0.0.0:80
#server_name;
}
Directive : root (server)
Il existe une autre directive que l’on doit utiliser pour indiquer à Nginx le dossier racine. Cette directive est root
.
On peut choisir le dossier que l’on souhaite.
Je vous propose de créer un dossier sites
. On pourrait y insérer tous les fichiers de nos différents sites internet.
cd /
mkdir sites
Afin d’ordonner les choses à l’intérieur du dossier sites
, nous pourrions créer un dossier par site internet.
Pour l’instant, nous allons juste gérer un site internet. Nous allons donc en créer un que l’on appellera monsite
.
cd sites
mkdir monsite
Par conséquent, le chemin d’accès aux fichiers de notre site internet est /sites/monsite
.
Nous pouvons l’ajouter à notre fichier de configuration.
section {
listen 80; # Équivalent 0.0.0.0:80
#server_name;
root /sites/monsite;
}
Directive : index (server)
La directive index
définit les fichiers à rechercher lorsqu’une demande est faite pour un répertoire.
En général, on utilise les fichiers :
- index.html
- index.php
Ces fichiers sont utilisés dans les projets de sites internet.
section {
listen 80; # Équivalent 0.0.0.0:80
#server_name;
root /sites/monsite;
index index.php index.html;
}
Directive : error_page (server)
Lorsqu’un utilisateur souhaite accéder à une page qui n’existe pas, généralement, nous le serveur va envoyer un page personnalisé de type 404.
Une erreur 404 est une réponse d’erreur HTTP qui indique que la ressource demandée n’a pas été trouvée sur le serveur.
section {
listen 80; # Équivalent 0.0.0.0:80
#server_name;
index index.php index.html;
error_page 404 /page_404.html;
}
Pour l’instant le fichier page_404.html
n’existe pas. Nous allons le créer plus tard.
Directive : access_log (server)
La directive access_log
permet de transmettre à Nginx le chemin du fichier qui contiendra une liste des requêtes HTTP traitées de notre site internet.
Nous allons choisir le chemin /var/log/nginx/
et le fichier access.log
.
section {
listen 80; # Équivalent 0.0.0.0:80
#server_name;
index index.php index.html;
error_page 404 /page_404.html;
access_log /var/log/nginx/access.log;
}
Principales directives
Vous avez découvert les principales directives. Mais il y’en a d’autres que nous allons dévoiler dans la prochaine leçon.