Comment créer un hôte virtuel Nginx (bloc serveur)
Les blocs de serveur, souvent appelés hôtes virtuels dans Nginx, vous permettent d'héberger plusieurs sites Web sur un seul serveur. Voici comment les utiliser !
Nginx est conçu pour gérer plusieurs domaines sur un seul serveur et une seule adresse IP. En d'autres termes, si vous disposez d'un serveur utilisé comme serveur Web et auquel une seule adresse IP est attribuée, vous devez alors utiliser des hôtes virtuels Nginx pour que plusieurs sites Web ou domaines soient exécutés sur le serveur.
Avant de commencer ce didacticiel, vous devez installer Nginx. Pour savoir comment l'installer, lisez notre excellent guide sur l'installation du serveur Web Nginx sous Linux.
Qu'est-ce qu'un hôte virtuel ?
Laissez-moi vous expliquer si vous n'êtes pas sûr de ce qu'est un hôte virtuel. Il s'agit d'un terme Apache HTTP Server ; cependant, il est également couramment utilisé par les utilisateurs de Nginx. Le terme approprié pour Nginx est blocage du serveur.
Connexe : Apache ou Nginx : quel serveur Web choisir
En bref, un hôte virtuel est une méthode permettant d'héberger plusieurs noms de domaine sur un seul serveur.
Comment fonctionne l'hôte virtuel ?
Lorsque vous démarrez un logiciel de serveur Web tel que Nginx sur un serveur, ce serveur Web se liera à un ou plusieurs ports réseau. Habituellement, pour un serveur Web, il s'agira des ports 80 et 443.
Lorsqu'un ordinateur visite un site Web, il envoie une requête via Internet au serveur, et le serveur reçoit cette requête. Mais, d’abord, le serveur examinera le port de destination auquel la demande a été envoyée.
Ensuite, il utilisera ce port de destination pour déterminer l'application à laquelle transmettre ces informations. Cela signifie que votre serveur Web ne peut avoir qu’une seule application recevant les requêtes.
Mais que se passe-t-il si vous souhaitez exécuter deux sites Web sur le même serveur ? Lorsqu'un paquet demandant un site Web est reçu, le serveur doit déterminer quel site Web est demandé avant de décider quelles informations renvoyer.
Il est essentiel de comprendre que quel que soit le site Web demandé, le serveur ne peut pas identifier le site Web auquel un client tente d'accéder en fonction du numéro de port et du port de destination.
Ainsi, tout ce que le serveur fera, c'est dire : « J'envoie cette demande à Nginx ». À partir de là, Nginx doit décider quoi renvoyer.
C'est à ce moment-là que les blocages du serveur entrent en jeu. Ils peuvent être utilisés pour desservir d'autres sites Web en fonction de l'adresse IP demandée ou pour desservir différents sites Web en fonction du nom de domaine utilisé.
Ainsi, lorsque vous saisissez le nom d'un site Web, tel que www.example.com
, et que le serveur le reçoit, Nginx examinera les en-têtes HTTP pour voir quel nom de serveur a été demandé.
Ensuite, en fonction des hôtes virtuels configurés, le serveur détermine quel répertoire stocke les fichiers du site Web et fournit la réponse correcte au client en fonction du nom du serveur.
Comment créer des hôtes virtuels Nginx (blocs de serveur)
Nous pouvons créer et stocker nos fichiers de configuration d'hôte virtuel dans deux répertoires. Les deux sont situés dans le répertoire /etc/nginx
. Les noms de ces deux répertoires sont sites-available
et sites-enabled
.
/etc/nginx/sites-available
: le répertoire dans lequel les hôtes virtuels individuels (sites Web) sont définis. N'oubliez pas que Nginx n'utilisera pas les fichiers de configuration de ce répertoire sauf s'ils sont liés au répertoire/etc/nginx/sites-enabled
./etc/nginx/sites-enabled
: Liste des hôtes virtuels (sites Web) activement servis par Nginx.
Vous vous demandez pourquoi nous avons besoin de deux répertoires pour stocker nos fichiers d’hôte virtuel ? La réponse est que de cette manière, nous pouvons créer de nombreux fichiers d'hôte virtuel sur notre serveur Nginx, mais nous pouvons les activer selon nos besoins.
Pour ce guide, nous allons créer des fichiers d'hôte virtuel sur notre serveur Nginx pour héberger plusieurs sites avec plusieurs domaines. Les noms de domaine sont website1.com et website2.com.
1. Création de la structure des répertoires
Tout d’abord, nous devons créer un répertoire pour chaque hôte virtuel afin de stocker les différents contenus du site Web. Nous placerons ces répertoires dans /var/www
et les nommerons après chaque nom de domaine.
Exécutez les commandes suivantes pour créer les répertoires :
sudo mkdir -p /var/www/website1.com
sudo mkdir -p /var/www/website2.com
L'indicateur -p
dans la commande ci-dessus indique à mkdir
de créer tous les répertoires parents nécessaires.
2. Création de pages de test pour chaque site Web
Ensuite, à des fins de démonstration, créons un fichier index.html
dans le répertoire racine des documents du domaine afin d'avoir quelque chose à afficher.
sudo vim /var/www/website1.com/index.html
Collez les lignes suivantes :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Welcome to Website 1!</title>
</head>
<body>
<h1>Welcome to Website 1!</h1>
</body>
</html>
Répétez maintenant l’étape ci-dessus pour website2.com.
sudo vim /var/www/website2.com/index.html
Collez les lignes suivantes :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Welcome to Website 2!</title>
</head>
<body>
<h1>Welcome to Website 2!</h1>
</body>
</html>
3. Créer un hôte virtuel Nginx (blocs de serveur)
Pour créer un fichier d'hôte virtuel Nginx dans le répertoire sites-available
, exécutez la commande suivante :
sudo vim /etc/nginx/sites-available/website1.com
Il convient de noter que le fichier de configuration de l'hôte virtuel Nginx peut être nommé comme vous le souhaitez, mais c'est généralement une bonne idée d'utiliser le nom de domaine.
Maintenant, collez le contenu suivant dans votre fichier d'hôte virtuel :
server {
listen 80;
server_name website1.com www.website1.com;
root /var/www/website1.com;
access_log /var/log/nginx/website1-access.log;
error_log /var/log/nginx/website1-error.log;
}
Pour rendre les choses plus transparentes, décomposons cette syntaxe. Tout d’abord, voici ce que signifie chaque paramètre :
listen
server_name
root
error_log
access_log
: Spécifiez sur quel port le serveur Nginx doit écouter les connexions.
: Ici, nous répondons aux demandes pour notre domaine. La directive contient une liste de noms de domaine que nous souhaitons utiliser pour accéder à notre site.
: L'emplacement du répertoire dans lequel nous avons stocké les fichiers de notre site Web.
: Chemin complet vers le fichier journal dans lequel nous stockons les journaux d’erreurs de cet hôte virtuel.
: Chemin complet vers le fichier journal dans lequel nous stockons les journaux d’accès de cet hôte virtuel.
Nous pouvons maintenant utiliser notre configuration initiale d'hôte virtuel comme base pour notre deuxième fichier. Copiez-le simplement pour créer un nouveau fichier :
sudo cp /etc/nginx/sites-available/website1.com /etc/nginx/sites-available/website2.com
Ouvrez le nouveau fichier et ajustez-le pour qu'il corresponde à notre deuxième nom de domaine (website2.com
) :
sudo vim /etc/nginx/sites-available/website2.com
server {
listen 80;
server_name website2.com www.website2.com;
root /var/www/website2.com;
access_log /var/log/nginx/website2-access.log;
error_log /var/log/nginx/website2-error.log;
}
4. Activer les hôtes virtuels Nginx (blocs de serveur)
La dernière chose que nous devons faire avant de tester l'activation des hôtes virtuels. Nous pouvons le faire en créant un lien symbolique depuis le fichier vers le répertoire sites-enabled
:
sudo ln -s /etc/nginx/sites-available/website1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/website2.com /etc/nginx/sites-enabled/
Comme vous pouvez le voir sur l'image ci-dessous, ces fichiers sont désormais liés au répertoire sites-enabled
.
Avant de continuer, vérifions qu’il n’y a pas de fautes de frappe. Testez la configuration Nginx pour vérifier la syntaxe correcte :
sudo nginx -t
Enfin, si aucun problème n'a été détecté, redémarrez le service Nginx pour appliquer les modifications :
sudo systemctl restart nginx
5. Test des hôtes virtuels (facultatif)
Pour tester les hôtes virtuels Nginx, nous devons d’abord faire pointer nos enregistrements de nom de domaine vers l’adresse IP du serveur. Dans notre cas, l'adresse IP du serveur est 192.168.122.101
.
Si vous êtes sous Linux, ouvrez le fichier /etc/hosts
sur votre ordinateur de bureau (celui à partir duquel vous effectuerez le test) à l'aide de la commande ci-dessous :
sudo vim /etc/hosts
Et ajoutez les noms de domaine virtuels un par un, comme indiqué ci-dessous.
Enregistrez et fermez le fichier lorsque vous avez terminé. Cette façon nous permettra de tester des domaines que nous ne possédons pas.
Ouvrez maintenant votre navigateur et saisissez www.website1.com
et www.website2.com
un par un. Vous verrez respectivement les pages d’index des deux domaines.
Vous avez configuré avec succès deux domaines indépendants avec Nginx.
6. Désactivez les hôtes virtuels Nginx (blocs de serveur)
Pour désactiver un hôte virtuel dans Nginx, nous devons supprimer le lien symbolique que nous avions créé lors de l'activation du fichier hôte virtuel. Par exemple, pour désactiver website2.com
, nous devons exécuter la commande suivante :
sudo rm -rf /etc/nginx/sites-enabled/website2.com
Pour appliquer les modifications, nous devons redémarrer le serveur Nginx :
sudo systemctl restart nginx
Conclusion
Cet article vous montre comment créer des hôtes virtuels Nginx (blocs de serveur) et héberger plusieurs domaines sur un seul serveur Linux. Pour créer un hôte virtuel pour un autre domaine, répétez les mêmes étapes. Mais bien sûr, Nginx peut faire bien plus.
Connexe : Comment configurer Nginx pour fonctionner avec PHP via PHP-FPM
De plus, si vous souhaitez savoir comment sécuriser votre site Web avec un certificat SSL gratuit, je vous recommande de consulter notre guide « Comment utiliser Certbot pour obtenir un certificat SSL gratuit Let's Encrypt ».
Vous pouvez vous référer à la documentation officielle de Nginx pour plus d'informations sur la configuration d'un serveur Nginx.
Merci d'avoir lu! J'espère que vous avez trouvé l'article utile et que vous avez pu configurer les hôtes virtuels. N'hésitez pas à laisser un commentaire si vous avez des questions.