Nginx-Einstellungen Golang

PHPz
Freigeben: 2023-05-19 09:04:37
Original
802 Leute haben es durchsucht

In tatsächlichen Anwendungsszenarien kann die Kombination von Nginx und Golang gute Leistung und hochverfügbare Webdienste bieten. In diesem Artikel erfahren Sie, wie Sie Proxy-Golang-Dienste über Nginx umkehren und wie Sie Nginx für den Lastausgleich in Golang verwenden.

1. Nginx-Reverse-Proxy-Golang-Dienst

Reverse-Proxy ist eine gängige Serverarchitektur, die Leistung und Zuverlässigkeit verbessern kann. Dabei wird eine Anfrage vom Client an einen Reverse-Proxy-Server gesendet, der die Anfrage dann an den eigentlichen Server im Servercluster weiterleitet und die Antwort an den Client zurücksendet. Der Nginx-Reverse-Proxy ist eine hervorragende Lösung, die nicht nur hochleistungsfähig ist, sondern auch problemlos Tausende gleichzeitiger Verbindungen verarbeiten kann.

In praktischen Anwendungen gibt es zwei Hauptmethoden für Reverse-Proxys: Die eine ist ein virtueller Host basierend auf dem Domänennamen und die andere basiert auf dem URL-Pfad.

1. Domainnamenbasierter Reverse-Proxy

Angenommen, Ihr Domainname ist example.com und es gibt zwei Subdomains unter diesem Domainnamen, eine ist blog.example.com und die andere ist api.example.com. Sie möchten, dass die beiden Subdomains auf unterschiedliche Server verweisen. Dann kann Ihr Nginx wie folgt konfiguriert werden:

server {
    server_name blog.example.com;
    location / {
         proxy_pass http://your.blog.server;
    }
}

server {
    server_name api.example.com;
    location / {
         proxy_pass http://your.api.server;
    }
}
Nach dem Login kopieren

2. URL-basierter Reverse-Proxy

Angenommen, Sie möchten Anfragen für /blog und /api zur Verarbeitung an verschiedene Server übergeben. Dann kann Ihr Nginx wie folgt konfiguriert werden:

location /blog/ {
    proxy_pass http://your.blog.server;
}

location /api/ {
    proxy_pass http://your.api.server;
}
Nach dem Login kopieren

Wenn ein Client auf diese Weise Inhalte auf example.com/blog/ anfordert, leitet Nginx die Anfrage an Ihren.blog.server weiter, anstatt lokale Inhalte zurückzugeben.

2. Golang verwendet Nginx für den Lastausgleich

  1. Nginx-Konfiguration

Bevor Sie den Golang-Client und Nginx für den Lastausgleich verwenden, müssen Sie Nginx installieren und konfigurieren.

Der Befehl zum Installieren von Nginx unter Ubuntu lautet wie folgt:

sudo apt-get update 
sudo apt-get install nginx
Nach dem Login kopieren

Nach Abschluss der Installation fügen Sie der Konfigurationsdatei den folgenden Inhalt hinzu:

events {
    worker_connections  1024;
}

http {
    upstream your_go_server {
        server 127.0.0.1:8080;
        server 127.0.0.1:8081;
    }

    server {
        listen 80;
        server_name localhost;
        location / {
            proxy_pass http://your_go_server;
        }
    }
}
Nach dem Login kopieren

Das Upstream-Modul definiert hier den Server, auf dem der Lastausgleich erfolgen soll, und mehrere Server können dies tun für den Lastausgleich konfiguriert werden. Das Servermodul definiert den Nginx-Port mit Lastausgleich. Der /-Pfad im Standortmodul gibt an, dass Nginx alle Anfragen weiterleitet.

  1. Golang-Client-Code

Für den Lastausgleich müssen Sie auf der Clientseite eine Golang-HTTP-Clientbibliothek verwenden und eine „Such“-Funktion schreiben, die einen Server in der Liste der Lastausgleichsserver auswählt.

func findServer() string {
    servers := []string{"http://127.0.0.1:8080", "http://127.0.0.1:8081"}   //要进行负载均衡的服务器列表
    n := len(servers)
    rand.Seed(time.Now().UnixNano())  //定义随机种子
    index := rand.Intn(n)  //生成随机数
    return servers[index]   //返回随机选择的服务器
}
Nach dem Login kopieren

Dann fügen Sie bei einer HTTP-Anfrage einfach „findServer()“ vor der Ressourcen-URL hinzu:

client := &http.Client{}
req, err := http.NewRequest("GET", findServer()+"/example", nil)
response, err := client.Do(req)
Nach dem Login kopieren

Auf diese Weise kann der Golang-Client-Code gut über das Lastausgleichssystem von Nginx verteilt werden.

Zusammenfassung

Die Implementierung von Reverse-Proxy und Lastausgleich durch die Kombination von Nginx und Golang kann die Leistung und hohe Verfügbarkeit von Anwendungen verbessern. Der Reverse-Proxy kann Client-Anfragen zur Verarbeitung an den eigentlichen Server weiterleiten, während der Lastausgleich die Last der Anfragen ausgleichen kann, um eine übermäßige Belastung eines bestimmten Servers zu vermeiden. Ich hoffe, dass die Einführung und die Beispiele in diesem Artikel Ihnen helfen können, Nginx und Golang besser zu nutzen.

Das obige ist der detaillierte Inhalt vonNginx-Einstellungen Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage