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

Besser aussehende benutzerdefinierte CSS-Stile (Titel h1 h2 h3)

Rendern Häufig verwendete Stile im Blog Garden /*...

Bootstrap 3.0-Lernunterlagen für Anfänger

Als ersten Artikel dieser Studiennotiz beginnen w...

Beispielcode zum Hervorheben von Suchbegriffen im WeChat-Miniprogramm

1. Einleitung Wenn Sie im Projekt auf eine Anford...

Transplantieren des Befehls mkfs.vfat in Busybox unter Linux

Um die Lebensdauer der Festplatte zum Speichern v...

Anpassungsmethode des Linux-Peripheriedateisystems

Vorwort Wenn wir von Linux-Systemen sprechen, mei...

Einführung in neue ECMAscript-Objektfunktionen

Inhaltsverzeichnis 1. Objekteigenschaften 1.1 Att...

jQuery realisiert Bildhervorhebung

Es ist sehr üblich, Bilder auf einer Seite hervor...

Zusammenfassung der Methoden zur Verbesserung der MySQL-Anzahl

Ich glaube, dass viele Programmierer mit MySQL ve...