Maison  >  Article  >  développement back-end  >  Explication détaillée des fonctions de liaison d'hôte virtuel et de nom de domaine du framework Gin

Explication détaillée des fonctions de liaison d'hôte virtuel et de nom de domaine du framework Gin

PHPz
PHPzoriginal
2023-06-22 09:10:072057parcourir

Le framework Gin est un framework Web léger qui fournit les fonctionnalités de base nécessaires pour créer rapidement des applications Web. Le framework Gin est flexible, efficace et évolutif, il est donc largement utilisé dans le domaine Internet. Parmi elles, les fonctions d'hôte virtuel et de liaison de nom de domaine du framework Gin sont des fonctionnalités importantes que les autres frameworks Web ne possèdent pas. Cet article présentera cette fonction en détail.

1. Qu'est-ce qu'un hôte virtuel ?

L'hôte virtuel consiste à créer plusieurs hôtes virtuels indépendants et mutuellement isolés sur un hôte physique. Chaque hôte virtuel possède son propre nom de domaine indépendant, son adresse IP et son répertoire Web. Les hôtes virtuels peuvent configurer différentes résolutions DNS pour pointer vers différentes adresses IP, permettant ainsi à plusieurs sites Web de s'exécuter sur le même serveur, économisant ainsi les ressources et les coûts du serveur.

2. Qu'est-ce que la liaison d'un nom de domaine ?

La liaison de nom de domaine consiste à lier différents noms de domaine au même hôte physique pour réaliser la fonction de plusieurs sites Web exécutés sur le même serveur. Grâce à la résolution de noms de domaine, différents noms de domaine sont mappés à l'adresse IP du même serveur, et le côté serveur détermine le site Web demandé par l'utilisateur en fonction du nom de domaine.

3. Explication détaillée de la fonction de liaison d'hôte virtuel et de nom de domaine du framework Gin

La fonction de liaison d'hôte virtuel et de nom de domaine du framework Gin est implémentée via un middleware. Parmi eux, la mise en œuvre de l'hôte virtuel repose sur le middleware vhost intégré au framework Gin, et la mise en œuvre de la liaison de nom de domaine repose sur le proxy inverse nginx.

  1. Le framework Gin a un middleware vhost intégré

le middleware vhost permet au framework Gin d'implémenter la fonction d'un hôte virtuel. Les étapes de mise en œuvre spécifiques sont les suivantes :

(1) Dans le répertoire racine de l'application, créez un nouveau dossier de configuration, créez un fichier vhosts.json sous le dossier et enregistrez les informations de configuration du hôte virtuel, comme suit Montré :

[
    {
        "host": "www.example1.com",
        "dir": "wwwroot1",
        "log": "logs/www1.log"
    },
    {
        "host": "www.example2.com",
        "dir": "wwwroot2",
        "log": "logs/www2.log"
    }
]

Parmi eux, chaque information de configuration contient trois champs : host représente le nom de domaine de l'hôte virtuel, dir représente le répertoire Web de l'hôte virtuel et log représente le nom du fichier journal de l’hôte virtuel.

(2) Dans la fonction principale de l'application, ajoutez le code suivant :

router := gin.Default()

vhosts, err := vhost.LoadConfig("./config/vhosts.json")
if err != nil {
    panic(err)
}

for _, vh := range vhosts {
    router.Group(vh.Host).Use(func(c *gin.Context) {
        c.Request.URL.Path = strings.TrimPrefix(c.Request.URL.Path, vh.Host)

        handler := http.FileServer(http.Dir(vh.Dir))
        handler.ServeHTTP(c.Writer, c.Request)
    })
}

router.Run()

Le code ci-dessus implémente la lecture des informations de configuration de l'hôte virtuel à partir du fichier de configuration, et Ajoutez un middleware au routeur pour traiter chaque hôte virtuel. Parmi eux, la fonction Group est le groupe de routage du framework Gin, qui est utilisé pour gérer le même groupe de routes. Le paramètre transmis ici est le nom de domaine de l'hôte virtuel.

Ensuite, ajoutez un middleware au groupe de routage pour traiter la requête. Dans le middleware, utilisez la fonction strings.TrimPrefix pour supprimer le nom de domaine de l'hôte virtuel dans l'URL et transmettez le chemin restant à http.FileServer pour traitement.

Le code ci-dessus implémente le traitement des hôtes virtuels, et différents hôtes virtuels sont accessibles via différentes URL.

  1. nginx reverse proxy

Dans les applications pratiques, il est généralement nécessaire d'utiliser le proxy inverse nginx pour lier les noms de domaine et les adresses IP. Un proxy inverse peut mapper différents noms de domaine sur la même adresse IP et le même numéro de port, et effectuer le routage et le transfert côté serveur en fonction du nom de domaine, permettant ainsi à plusieurs sites Web de s'exécuter sur le même serveur.

Les étapes spécifiques de mise en œuvre sont les suivantes :

(1) Ajoutez les informations de configuration de l'hôte virtuel dans le fichier de configuration nginx, comme indiqué ci-dessous :

server {
    listen 80;
    server_name www.example1.com;
    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

server {
    listen 80;
    server_name www.example2.com;
    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

Dans le code de configuration ci-dessus, Listen spécifie l'adresse IP et le numéro de port que l'hôte virtuel écoute, server_name spécifie le nom de domaine de l'hôte virtuel et location spécifie le chemin de requête de l'hôte virtuel. Parmi eux, proxy_pass transmet la requête à l'adresse spécifiée, ici vers le port local 8080.

(2) Dans le framework Gin, écoutez l'adresse IP et le numéro de port spécifiés pour recevoir les requêtes transmises par nginx. Le code d'implémentation spécifique est le suivant :

router := gin.Default()

router.GET("/", func(c *gin.Context) {
    c.String(http.StatusOK, "Hello, Gin!")
})

router.Run(":8080")

Dans le code ci-dessus, le port 8080 local est surveillé et une interface de test est ajoutée sous le chemin racine pour renvoyer une chaîne.

Grâce à la configuration ci-dessus, vous pouvez réaliser la fonction de plusieurs sites Web exécutés sur le même serveur. Le proxy inverse nginx mappe différents noms de domaine à l'adresse IP du même serveur, les achemine et les transmet en fonction du nom de domaine côté serveur. Le framework Gin est responsable du traitement des requêtes reçues et de leur mappage à l'hôte virtuel correspondant. basé sur le nom de domaine, réalisant ainsi plusieurs sites Web exécutés sur le même serveur.

4. Résumé

La fonction de liaison d'hôte virtuel et de nom de domaine du framework Gin peut permettre à plusieurs sites Web de s'exécuter sur le même serveur, économisant ainsi les ressources et les coûts du serveur. Grâce à l'utilisation combinée du middleware vhost et du proxy inverse nginx, des fonctions de liaison d'hôte virtuel et de nom de domaine flexibles, efficaces et évolutives peuvent être obtenues. La fonction de liaison d'hôte virtuel et de nom de domaine du framework Gin est une fonctionnalité très importante pour les développeurs Web, qui doit être maîtrisée et appliquée de manière flexible.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn