Maison  >  Article  >  développement back-end  >  Comment nginx transmet-il les requêtes au serveur backend Golang ?

Comment nginx transmet-il les requêtes au serveur backend Golang ?

PHPz
PHPzoriginal
2023-04-05 13:47:53969parcourir

Nginx est un serveur Web puissant et un serveur proxy inverse. Il peut être utilisé pour les protocoles HTTP, HTTPS, SMTP, POP3 et IMAP. Golang est un langage de programmation développé par Google. Il présente les caractéristiques d'une grande efficacité et d'une grande simplicité. Par conséquent, Golang est souvent utilisé pour écrire des programmes back-end dans des applications avec un front-end et un back-end séparés. Afin d'améliorer les performances et l'évolutivité de l'application, nous devons généralement utiliser Nginx comme proxy inverse pour transmettre la requête au serveur backend Golang.

Avant de configurer Nginx en tant que serveur proxy inverse, nous devons confirmer que l'application Golang est installée et exécutée sur le serveur. Nous pouvons confirmer si Golang a été installé via la commande suivante :

go version

Si le numéro de version est renvoyé, cela signifie que Golang a été installé avec succès. Ensuite, nous devons activer le service HTTP dans l'application Golang, comme indiqué ci-dessous :

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, Golang!")
    })

    http.ListenAndServe(":8080", nil)
}

Dans ce code, nous définissons une fonction de traitement HTTP qui renverra "Bonjour, Golang !" Ensuite, nous utilisons la fonction http.ListenAndServe() pour enregistrer le service HTTP sur le port 8080. http.ListenAndServe()函数将HTTP服务注册在8080端口上。

接下来,我们将Nginx配置为反向代理服务器,将请求转发到Golang后端服务器上。我们可以在Nginx的配置文件中添加以下内容:

server {
    listen       80;
    server_name  localhost;

    location / {
        proxy_pass       http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

在这段代码中,我们定义了一个服务器块,使用listen指令设置Nginx监听的端口,使用server_name指令设置服务器名称。然后,我们使用location指令定义一个请求路径,将请求转发到http://127.0.0.1:8080地址上。同时,我们使用proxy_set_header

Ensuite, nous configurons Nginx comme serveur proxy inverse pour transmettre les requêtes au serveur backend Golang. Nous pouvons ajouter le contenu suivant au fichier de configuration Nginx :

curl http://localhost/
Dans ce code, nous définissons un bloc serveur, utilisons la directive listen pour définir le port que Nginx écoute et utilisons server_name définit le nom du serveur. Ensuite, nous utilisons la directive <code>location pour définir un chemin de requête et transmettre la requête à l'adresse http://127.0.0.1:8080. Dans le même temps, nous utilisons la directive proxy_set_header pour définir certaines informations d'en-tête HTTP afin que l'application Golang puisse obtenir correctement l'adresse IP du client.

Maintenant, nous pouvons utiliser la commande suivante pour tester si Nginx a transmis avec succès la requête à l'application Golang :

rrreee

Si "Bonjour, Golang !" est renvoyé, Nginx a transmis avec succès la requête au backend Golang. en haut. 🎜🎜Pour résumer, avant de configurer Nginx comme serveur proxy inverse, nous devons confirmer que l'application Golang a été installée et exécutée sur le serveur. Ensuite, nous activons le service HTTP de Golang et configurons Nginx en tant que serveur proxy inverse pour transmettre la requête au serveur backend de Golang. Bien entendu, pour une application spécifique, une configuration détaillée est requise en fonction de la situation réelle. 🎜

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