Heim  >  Artikel  >  Backend-Entwicklung  >  Wie leitet Nginx Anfragen an den Golang-Backend-Server weiter?

Wie leitet Nginx Anfragen an den Golang-Backend-Server weiter?

PHPz
PHPzOriginal
2023-04-05 13:47:53913Durchsuche

Nginx ist ein leistungsstarker Webserver und Reverse-Proxy-Server. Er kann für die Protokolle HTTP, HTTPS, SMTP, POP3 und IMAP verwendet werden. Golang ist eine von Google entwickelte Programmiersprache. Sie zeichnet sich durch hohe Effizienz und Einfachheit aus. Daher wird Golang häufig zum Schreiben von Back-End-Programmen in Anwendungen mit separatem Front-End und Back-End verwendet. Um die Leistung und Skalierbarkeit der Anwendung zu verbessern, müssen wir normalerweise Nginx als Reverse-Proxy verwenden, um die Anfrage an den Golang-Backend-Server weiterzuleiten.

Bevor wir Nginx als Reverse-Proxy-Server konfigurieren, müssen wir bestätigen, dass die Golang-Anwendung auf dem Server installiert ist und ausgeführt wird. Mit dem folgenden Befehl können wir bestätigen, ob Golang installiert wurde:

go version

Wenn die Versionsnummer zurückgegeben wird, bedeutet dies, dass Golang erfolgreich installiert wurde. Als nächstes müssen wir den HTTP-Dienst in der Golang-Anwendung aktivieren, wie unten gezeigt:

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)
}

In diesem Code definieren wir eine HTTP-Verarbeitungsfunktion, die „Hallo, Golang!“ zurückgibt, wenn eine Anfrage eingeht. Anschließend verwenden wir die Funktion http.ListenAndServe(), um den HTTP-Dienst auf Port 8080 zu registrieren. 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

Als nächstes konfigurieren wir Nginx als Reverse-Proxy-Server, um Anfragen an den Golang-Backend-Server weiterzuleiten. Wir können der Nginx-Konfigurationsdatei den folgenden Inhalt hinzufügen:

curl http://localhost/
In diesem Code definieren wir einen Serverblock, verwenden die Direktive listen, um den Port festzulegen, auf den Nginx lauscht, und verwenden server_name-Direktive legt den Servernamen fest. Anschließend verwenden wir die Direktive <code>location, um einen Anforderungspfad zu definieren und die Anforderung an die Adresse http://127.0.0.1:8080 weiterzuleiten. Gleichzeitig verwenden wir die Direktive proxy_set_header, um einige HTTP-Header-Informationen festzulegen, damit die Golang-Anwendung die Client-IP-Adresse korrekt abrufen kann.

Jetzt können wir mit dem folgenden Befehl testen, ob Nginx die Anfrage erfolgreich an die Golang-Anwendung weitergeleitet hat:

rrreee

Wenn „Hallo, Golang!“ zurückgegeben wird, hat Nginx die Anfrage erfolgreich an das Golang-Backend weitergeleitet hoch. 🎜🎜Zusammenfassend müssen wir vor der Konfiguration von Nginx als Reverse-Proxy-Server bestätigen, dass die Golang-Anwendung auf dem Server installiert wurde und ausgeführt wird. Anschließend aktivieren wir den HTTP-Dienst von Golang und konfigurieren Nginx als Reverse-Proxy-Server, um die Anfrage an den Golang-Backend-Server weiterzuleiten. Für eine bestimmte Anwendung ist natürlich eine detaillierte Konfiguration basierend auf der tatsächlichen Situation erforderlich. 🎜

Das obige ist der detaillierte Inhalt vonWie leitet Nginx Anfragen an den Golang-Backend-Server weiter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn