Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : .NET Core 2.1, .NET Core 3.1, .NET 5
Cet article explique comment configurer un deuxième site web dans Nginx à l’aide du nom d’hôte et comment tester la configuration.
Prerequisites
Pour cette partie, vous devez configurer les éléments suivants :
- Nginx s’exécute automatiquement et écoute des requêtes envoyées sur le port 80.
- Nginx configuré comme proxy inverse et acheminant toutes les requêtes HTTP entrantes vers la première application ASP.NET Core qui écoute sur le port 5000 (vous pouvez utiliser n’importe quelle application ASP.NET Core en tant qu’application principale qui s’exécute sur ce port.)
- Cette première application ASP.NET Core configurée pour toujours s’exécuter (si le processus s’arrête ou si le serveur est redémarré, l’application ASP.NET Core doit démarrer automatiquement.)
- Le pare-feu local Linux activé et configuré pour autoriser le trafic entrant SSH et HTTP.
- Une deuxième application ASP.NET Core configurée pour écouter le port 5001 (cette application doit également être configurée pour toujours s’exécuter, et l’exemple BuggyAmb ASP.NET’application Core doit être configuré comme deuxième application dans l’installation.)
Objectif de cette partie
Actuellement, il existe un site configuré dans Nginx. Toute demande qui arrive sur le port 80 vers Nginx est acheminée vers ce site. Le nom d’hôte n’a pas d’importance dans cette configuration. Utilisez l’adresse IP ou tout nom d’hôte qui se résout à l’adresse IP. Toutes les demandes sont acheminées vers le site web par défaut. Ce site web par défaut agit en tant que proxy inverse et achemine les requêtes vers la première application ASP.NET Core qui écoute sur le port 5000.
Dans cette partie du tutoriel, vous allez créer un deuxième site web dans Nginx. Ce site web agit également en tant que proxy inverse, et toute demande qui a un nom d’hôte spécifique sera acheminée vers la deuxième application ASP.NET Core qui écoute sur le port 5001.
Vous allez également configurer le site web pour écouter un nom d’hôte spécifique. À la fin, il y aura deux sites accessibles et qui ont ces noms d’hôte :
- Premier site web :
http://myfirstwebsite
dirigera le trafic vers la première application de démonstration ASP.NET Core. - Deuxième site web :
http://buggyamb
dirigera le trafic vers le deuxième exemple d’application buggy core ASP.NET Core.
Ajoutez et buggyamb
accédez myfirstwebsite
au fichier hosts de vos ordinateurs Windows et Linux clients. De cette façon, vous pouvez utiliser ces URL pour tester la nouvelle configuration.
Ces noms d’hôtes sont uniquement à des fins de démonstration. N’hésitez pas à utiliser tous les autres noms d’hôtes que vous préférez, tant que vous utilisez constamment les mêmes noms d’hôtes dans les exercices de cette partie.
Configurer un deuxième web à l’aide d’un nom d’hôte dans Nginx
Si vous vous souvenez, l’un des répertoires dans lesquels Nginx charge les configurations de site est /etc/nginx/sites-enabled/. Actuellement, il existe un fichier de configuration par défaut. Le fichier ressemble à la capture d’écran suivante.
Note
Notez les parties en surbrillance, car vous devrez les modifier :
server_name
: vous pouvez définir le nom d’hôte souhaité ici. Actuellement, il est configuré avec la valeur_
. Cela signifie n’importe quel nom d’hôte.proxy_pass
: Il s’agit d’une application ASP.NET Core en cours d’exécution et d’écoute sur une URL donnée. Les demandes sont acheminées vers cette URL.
Configurez le premier site web pour écouter l’en-tête http://myfirstwebsite
de l’hôte. Pour ce faire, modifiez le server_name
fichier de configuration /etc/nginx/sites-enabled/default , comme illustré dans la capture d’écran suivante. En guise de rappel, vous devez utiliser la sudo vi /etc/nginx/sites-enabled/default
commande pour modifier ce fichier.
Créez un deuxième fichier de configuration Nginx pour le deuxième site web. Utilisez ce fichier comme modèle pour créer une copie de ce fichier dans le même répertoire de configuration. Nommez le fichier buggyamb.config.
sudo cp /etc/nginx/sites-enabled/default /etc/nginx/sites-enabled/buggyamb.config
Modifiez le fichier de configuration en exécutant la sudo vi /etc/nginx/sites-enabled/buggyamb.config
commande. Voici la version finale du fichier /etc/nginx/sites-enabled/buggyamb.config .
La configuration résultante doit avoir deux fichiers de configuration dans le répertoire de configuration du site Nginx : buggyamb.config et par défaut. Vous devez définir Nginx pour recharger les modifications de configuration. Toutefois, vous devez d’abord tester la nouvelle configuration pour vous assurer qu’aucune erreur n’a été introduite lorsque vous avez apporté des modifications. Exécutez la sudo nginx -t
commande et vérifiez que la configuration est correcte. Ensuite, exécutez sudo nginx -s reload
pour recharger la configuration et lire les nouvelles modifications.
Tester la nouvelle configuration
Définissez les myfirstwebsite
noms d’hôte et buggyamb
les noms d’hôte à résoudre en adresses IP correctes. Lorsque vous accédez aux sites à partir de l’ordinateur Linux, ces noms d’hôte doivent être résolus sur 127.0.0.1 et pour les clients externes, tels que l’ordinateur Windows client. Les noms d’hôte doivent être résolus sur l’adresse IP publique de votre machine virtuelle Linux. Vous pouvez récupérer cette adresse IP à partir du Portail Azure.
Note
Les mappages hosts sont stockés dans le fichier /etc/hosts dans Linux et dans le fichier C :\WINDOWS\System32\drivers\etc\hosts dans Windows.
Il s’agit du contenu du fichier hosts Linux.
Vous pouvez exécuter les curl myfirstwebsite
commandes et curl buggyamb
les exécuter pour effectuer des requêtes sur chacun des deux sites.
Voici la curl myfirstwebsite
sortie. La réponse semble afficher correctement le contenu HTML de la page d’accueil de la démonstration ASP.NET application principale qui a été initialement déployée et écoute sur le port 5000.
Et voici la curl buggyamb
sortie. Cela affiche le contenu HTML de la page d’accueil de l’exemple d’application BuggyAmb qui s’exécute sur le port 5001.
Vous devez pouvoir parcourir les mêmes URL à partir de l’ordinateur client à l’aide d’un navigateur. Cela doit également fonctionner si vous configurez correctement le fichier hosts. Il s’agit de ce qui s’affiche lorsque vous accédez à http://buggaymb
partir d’un navigateur qui s’exécute sur un ordinateur Windows.
Jusqu’à ce stade, vous disposez de la configuration suivante :
Nginx hébergeant deux sites web :
- Le premier site web écoute les requêtes à l’aide de l’en-tête de l’hôte
myfirstwebsite
et route les requêtes vers notre application de démonstration ASP.NET Core. Cette application écoute le port 5000. - Le deuxième site web écoute le trafic HTTP entrant à l’aide de la valeur d’en-tête de
buggyamb
l’hôte, et route les requêtes vers la deuxième application ASP.NET Exemple de bogue Core. Cette application écoute le port 5001.
- Le premier site web écoute les requêtes à l’aide de l’en-tête de l’hôte
Les deux applications ASP.NET Core s’exécutent en tant que services qui redémarrent automatiquement lorsque le serveur est redémarré, ou les applications cessent de répondre.
Le pare-feu local Linux est activé et configuré pour autoriser les trafics SSH et HTTP.
Conseils de dépannage
Vous pouvez recevoir une erreur HTTP 502 - Passerelle incorrecte lorsque vous parcourez un site. « HTTP 502 - Passerelle incorrecte » signifie que Nginx n’a pas pu communiquer avec l’application principale ASP.NET Core. Cela se produit si l’application principale n’est pas en cours d’exécution.
Dans ce cas :
- Assurez-vous que les deux applications ASP.NET Core écoutent sur différents ports. L’un doit écouter sur le port 5000, tandis que l’autre doit écouter sur le port 5001.
- Assurez-vous que les deux applications ASP.NET Core sont configurées pour démarrer automatiquement.
- Vérifiez l’état des services d’application core ASP.NET qui utilisent les
systemctl status
commandes. Si l’un n’est pas en cours d’exécution, résolvez-le en examinant les journaux système en exécutant lajournalctl
commande. PermetsyslogIdentifier
de filtrer les journaux. - Vérifiez que .NET Core 3.1 et .NET 5.0 sont installés. Un site utilise .NET Core 3.1, l’autre utilise .NET 5.0.