GNU/Linux >> Tutoriels Linux >  >> Linux

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.

Table des matières

  • Qu'est-ce qu'un hôte virtuel ?
  • Comment fonctionne l'hôte virtuel ?
  • Comment créer des hôtes virtuels Nginx (blocs de serveur)
    • 1. Création de la structure du répertoire
    • 2. Création de pages de test pour chaque site Web
    • 3. Créer un hôte virtuel Nginx (blocs de serveur)
    • 4. Activer les hôtes virtuels Nginx (blocs de serveur)
    • 5. Test des hôtes virtuels (facultatif)
    • 6. Désactiver les hôtes virtuels Nginx (blocs de serveur)
  • Conclusion

Nginx est conçu pour gérer plusieurs domaines sur un seul serveur et une seule adresse IP. En d'autres termes, si vous avez un seul serveur utilisé comme serveur Web et qu'il n'a alloué qu'une seule adresse IP, alors pour avoir plus d'un site Web ou domaine en cours d'exécution sur le serveur, vous utilisez des hôtes virtuels Nginx.

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 ?

Si vous n'êtes pas sûr de ce qu'est un hôte virtuel, laissez-moi vous expliquer. 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 bloc de serveur .

Un hôte virtuel est une méthode pour 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 lie à un ou plusieurs ports réseau. Habituellement, pour un serveur Web, il s'agira des ports 80 et 443.

Lorsqu'un ordinateur va visiter un site Web, il enverra une demande sur Internet au serveur, et le serveur recevra cette demande. Donc, la première chose que le serveur va faire est de regarder le port sur lequel la requête a été envoyée au port de destination.

Ensuite, il utilisera ce port de destination pour déterminer à quelle application 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 héberger deux sites Web différents sur le même serveur Web ? Le serveur doit savoir quand un paquet arrive pour demander le site Web. Ensuite, il doit savoir quel site Web est demandé pour savoir quelles informations renvoyer.

Quel que soit le site Web demandé, le serveur ne peut pas utiliser uniquement le numéro de port du port de destination pour déterminer le site Web auquel un client tente d'accéder. Tout ce que le serveur va faire, c'est dire :"J'envoie cette requête à Nginx". À partir de là, Nginx doit décider quoi renvoyer.

Nginx a un concept appelé blocs de serveur . Les blocs de serveur peuvent être utilisés pour deux choses différentes.

Ils peuvent être utilisés pour servir d'autres sites Web en fonction de l'adresse IP demandée, ou ils peuvent être utilisés pour servir différents sites Web en fonction du nom de domaine utilisé .

Ainsi, lorsque vous tapez le nom du site Web comme www.example.com et lorsque le serveur le reçoit, Nginx peut regarder à l'intérieur des en-têtes HTTP quel nom de serveur a été demandé et à partir de là, en fonction de ses hôtes virtuels configurés, pour faire une décision dans quel répertoire stocke les fichiers du site Web et de renvoyer la réponse correcte au client en fonction du nom du serveur.

Comment créer des hôtes virtuels Nginx (blocs de serveur)

Il existe deux répertoires dans lesquels nous pouvons créer et stocker nos fichiers de configuration d'hôte virtuel. Les deux sont situés dans le /etc/nginx annuaire. 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 trouvés dans ce répertoire sauf s'ils sont liés au /etc/nginx/sites-enabled répertoire.
  • /etc/nginx/sites-enabled  :Liste des hôtes virtuels (sites Web) activement desservis par Nginx.

Vous demandez-vous probablement pourquoi nous avons besoin de deux répertoires pour stocker nos fichiers d'hôte virtuel ? Le principal avantage de ceci est que nous pouvons créer de nombreux fichiers d'hôtes virtuels sur notre serveur Nginx, mais nous pouvons les activer selon nos besoins.

Nous allons créer des fichiers d'hôtes virtuels pour héberger plusieurs sites avec plusieurs domaines sur notre serveur Nginx. Les noms de domaine sont website1.com et siteweb2.com .

1. Création de la structure du répertoire

La première chose que nous devons faire est de créer un répertoire pour chaque hôte virtuel afin de stocker les différents contenus du site Web. Nous placerons les répertoires dans /var/www , et nous les nommerons d'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

Le -p l'indicateur dans la commande ci-dessus indique mkdir pour créer 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 index.html fichier dans le répertoire racine des documents du domaine afin que nous ayons 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 sites-available répertoire, exécutez la commande suivante :

sudo vim /etc/nginx/sites-available/website1.com

Il est important de noter que le fichier de configuration de l'hôte virtuel Nginx peut être nommé comme vous le souhaitez, mais il est généralement recommandé 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  :Spécifiez sur quel port le serveur Nginx doit écouter les connexions.
  • server_name :Ici, nous faisons correspondre les demandes pour notre domaine. La directive contient une liste de noms de domaine que nous souhaitons utiliser pour accéder à notre site.
  • root  : L'emplacement du répertoire dans lequel nous avons stocké les fichiers de notre site Web.
  • error_log :Chemin complet vers le fichier journal dans lequel nous stockons tous les journaux d'erreurs de cet hôte virtuel.
  • access_log :Chemin complet vers le fichier journal dans lequel nous stockons tous 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 (website2.com ) nom de domaine :

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 que les tests n'activent les hôtes virtuels. Nous pouvons le faire en créant un lien symbolique entre le fichier et le sites-enabled répertoire :

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 maintenant liés dans le sites-enabled répertoire.

Avant d'aller de l'avant, 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

Et enfin, si aucun problème n'a été trouvé, 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 fichier sur votre PC 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é. Cela nous permettra de tester des domaines que nous ne possédons pas.

Ouvrez maintenant votre navigateur et entrez www.website1.com et www.website2.com un par un. Vous verrez les pages d'index des deux domaines, respectivement.

Vous avez configuré avec succès deux domaines indépendants avec Nginx.

6. Désactiver 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 d'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 beaucoup plus.

De plus, si vous voulez savoir comment sécuriser votre site Web avec un certificat SSL gratuit, je vous recommande de consulter notre guide Let's Encrypt :Obtenez un certificat SSL gratuit avec Certbot.

Pour plus d'informations sur la configuration d'un serveur Nginx, vous pouvez vous référer à la documentation officielle de Nginx.

Merci d'avoir lu! J'espère que vous avez trouvé cet article utile et que vous avez pu configurer les hôtes virtuels. N'hésitez pas à laisser un commentaire si vous avez des questions.


Linux
  1. Comment configurer l'hôte virtuel Nginx (blocs de serveur) sur CentOS 7

  2. Comment rediriger HTTP vers HTTPS dans Nginx

  3. Comment créer une sauvegarde

  4. Comment créer une sortie virtuelle dans Pulseaudio ?

  5. Hôte virtuel Nginx – Bloc serveur Nginx

Comment installer Nginx dans Debian 7

Comment installer Nginx sur Fedora 22

Comment installer HHVM (HipHop Virtual Machine) sur Ubuntu 20.04 en utilisant Nginx

Comment installer NGINX sur Ubuntu 20.04

Comment installer Nginx sur CentOS 7

Comment configurer NGINX sur un serveur CentOS 7