So implementieren Sie Nginx Reverse Proxy und Load Balancing (basierend auf Linux)

So implementieren Sie Nginx Reverse Proxy und Load Balancing (basierend auf Linux)

Probieren wir hier den Reverse-Proxy von Nginx aus.

Bei der Reverse-Proxy-Methode wird ein Proxyserver verwendet, um Verbindungsanfragen im Internet anzunehmen, die Anfragen dann an einen Server im internen Netzwerk weiterzuleiten und die vom Server erhaltenen Ergebnisse an den Client zurückzugeben, der die Verbindung im Internet anfordert. Zu diesem Zeitpunkt erscheint der Proxyserver der Außenwelt als Reverse-Proxyserver.

In unserem Java-Projekt erfolgt der Zugriff über Port 80, Nginx empfängt ihn, leitet ihn dann an den Tomcat-Server weiter und gibt anschließend das Ergebnis des Servers zurück.

Hier müssen Sie die Datei nginx.conf ändern.

Upstream-Backend {
  #Je höher das Proxy-IP-Gewicht ist, desto mehr Verkehr empfängt er. Im Gegenteil, Server localhost:8084 weight=50;
  Server lokaler Host:8088 Gewicht=50;
}

Leiten Sie die empfangene Anfrage weiter:

# / gesamter Lastenausgleich + Reverse-Proxy-Standort / {
      Stamm /data/wwwroot1;
      index index.html index.htm;#index Datei Proxy-Passwort http://backend;
    }

Auf diese Weise kann die an Nginx gestellte Anfrage an Tomcat zugewiesen und weitergeleitet werden. Hier habe ich zwei Tomcat-Server definiert, die zum Lastenausgleich verwendet werden. Durch Festlegen des Gewichts können Sie den Umfang des Zugriffs steuern.

Der spezifische Konfigurationscode lautet wie folgt:

#Benutzer niemand;
# Der Arbeitsprozess legt normalerweise die Anzahl der CPUs fest * die Anzahl der Kerne worker_processes 1;
 
#error_log Protokolle/Fehler.log;
#error_log Protokolle/error.log Hinweis;
#error_log Protokolle/error.log-Info;
 
#pid-Protokolle/nginx.pid;
 
# Verbindungseigenschaften festlegen events {
  worker_connections 1024;#Wie viele Verbindungen generiert ein Worker}
 
# Konfigurieren Sie den Hauptabschnitt des HTTP-Servers http {
  mime.types einschließen;
  Standardtyp Anwendung/Oktett-Stream;
 
  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  # '$status $body_bytes_sent "$http_referer" '
  # '"$http_user_agent" "$http_x_forwarded_for"';
 
  #access_log Protokolle/access.log Haupt;
 
  sendfile an;
  #tcp_nopush ein;
 
  #keepalive_timeout 0;
  KeepAlive-Timeout 65;
     
  #gzip-Komprimierungsfunktion aktiviert gzip;
  gzip_min_länge 1k;
  gzip_puffer 4 16k;
  gzip_http_version 1.0;
  gzip_comp_level 6;
  gzip_types Text/Klartext/CSS-Text/Javascript-Anwendung/JSON-Anwendung/Javascript-Anwendung/X-Javascript-Anwendung/Xml;
  gzip_vary ein;
   
  #Legen Sie die Liste der Backend-Server für den Lastenausgleich im Upstream-Backend fest {
    #Je höher das Proxy-IP-Gewicht ist, desto mehr Verkehr empfängt er. Im Gegenteil, Server localhost:8084 weight=50;
    Server lokaler Host:8088 Gewicht=50;
  }
   
   
   
  Server {
    hören Sie 2022;
    Servername localhost;
    Zeichensatz UTF-8;
    access_log Protokolle/wwwroot2.access.log Haupt;
    Standort / {
      Wurzel /data/wwwroot2;
      index index.html index.htm;#Indexdatei}
  }
  # Virtueller Hostabschnitt Server {
    hören Sie 80;
    Servername localhost;
    Stamm /data/wwwroot1;
    Zeichensatz UTF-8;
    #Zugriffsprotokoll access_log logs/wwwroot1.access.log main;
    # / gesamter Lastenausgleich + Reverse-Proxy-Standort / {
      Stamm /data/wwwroot1;
      index index.html index.htm;#index Datei Proxy-Passwort http://backend;
    }
 
    Fehlerseite 404 /404.html;
 
    # Server-Fehlerseiten auf die statische Seite /50x.html umleiten
    #
    Fehlerseite 500 502 503 504 /50x.html;
    Standort = /50x.html {
      Stamm-HTML;
    }
 
    # Proxy für die PHP-Skripte an Apache, das auf 127.0.0.1:80 lauscht
    #
    #Standort ~ \.php$ {
    # Proxy-Passwort http://127.0.0.1;
    #}
 
    # Übergeben Sie die PHP-Skripte an den FastCGI-Server, der auf 127.0.0.1:9000 lauscht.
    #
    #Standort ~ \.php$ {
    #Wurzel-HTML;
    # fastcgi_pass 127.0.0.1:9000;
    # fastcgi_index index.php;
    # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    #fastcgi_params einschließen;
    #}
 
    # Zugriff auf .htaccess-Dateien verweigern, wenn das Apache-Dokumentenstammverzeichnis
    # stimmt mit nginx überein
    #
    #Standort ~ /\.ht {
    # alles ablehnen;
    #}
  }
 
 
  # ein weiterer virtueller Host mit einer Mischung aus IP-, Namens- und Port-basierter Konfiguration
  #
  #server {
  # hören Sie 8000;
  # hören Sie irgendein Name:8080;
  # Servername irgendein Name Alias ​​anderer.Alias;
 
  # Standort / {
  #Wurzel-HTML;
  # index.html index.htm;
  # }
  #}
 
 
  # HTTPS-Server
  #
  #server {
  # 443 SSL abhören;
  # Servername localhost;
 
  # SSL-Zertifikat cert.pem;
  # SSL-Zertifikatsschlüssel cert.key;
 
  # ssl_session_cache geteilt:SSL:1m;
  #ssl_session_timeout 5m;
 
  # ssl_ciphers HOCH:!aNULL:!MD5;
  # ssl_prefer_server_ciphers ein;
 
  # Standort / {
  #Wurzel-HTML;
  # index.html index.htm;
  # }
  #}
 
}

Die Testergebnisse zeigen, dass beim Zugriff auf die Adresse von Port 80 die angezeigten Ergebnisse grundsätzlich 50:50 sind.

Auch wahlfreier Zugriff

Die beiden obigen Screenshots entsprechen den Testdateien unter meinen beiden Tomcat-Servern.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Installation des Nginx-Servers und der Lastausgleichskonfiguration auf einem Linux-System
  • So konfigurieren Sie mehrere Tomcats mit Nginx-Lastausgleich unter Linux
  • So erstellen Sie einen Nginx-Load-Balancing-Dienst unter Linux
  • Detaillierte Erläuterung der Linux-Systemkonfiguration Nginx Load Balancing
  • Detaillierte Erläuterung der Anwendungsfälle der Nginx-Lastausgleichskonfiguration unter Linux.

<<:  Eine Zusammenfassung der Fuzzy-Abfrage von MySQL wie

>>:  Detaillierte Erläuterung der Platzhalter für die Webentwicklung in JS-Zeichenfolgenverkettung und der Conlose-Objekt-API

Artikel empfehlen

28 berühmte Beispiele für Blog-Redesigns

1. WebDesignerWall 2. Veerles Blog 3. Lernprogram...

Detailliertes Beispiel des Kettenprogrammierstils von jQuery

Das Implementierungsprinzip der Kettenprogrammier...

mysql5.7-Remotezugriffseinstellungen

Das Einrichten des Fernzugriffs in mysql5.7 funkt...

HTML-Grundlagen: HTML-Inhaltsdetails

Beginnen wir mit dem Körper: Wenn Sie eine Webseit...

JavaScript ermittelt, ob der Browser IE ist

Als Frontend-Entwickler komme ich an den Tücken d...

Drei Möglichkeiten zum Zeichnen einer Herzform mit CSS

Im Folgenden stellen wir drei Möglichkeiten zum Z...

Detaillierte Beispiele zur Verwendung der JavaScript-Ereignisdelegierung (Proxy)

Inhaltsverzeichnis Einführung Beispiel: Ereignisd...

MySQL Master-Slave-Replikationsprinzip und zu beachtende Punkte

Vorne geschrieben Ich habe kürzlich ein spezielle...

Tiefgreifendes Verständnis des asynchronen Wartens in Javascript

In diesem Artikel untersuchen wir, warum async/aw...

Verwendung von relativen und absoluten Pfaden unter Linux

01. Übersicht Absolute und relative Pfade kommen ...

JavaScript-Implementierung der Dropdown-Liste

In diesem Artikelbeispiel wird der spezifische Ja...

Die Darstellung und Öffnungsmethode eines Hyperlinks

<br />Verwandte Artikel: So rufen Sie einen ...

vue + tp5 realisiert eine einfache Anmeldefunktion

In diesem Artikelbeispiel wird der spezifische Co...