Nginx Reverse Proxy Springboot JAR-Paket-Prozessanalyse

Nginx Reverse Proxy Springboot JAR-Paket-Prozessanalyse

Die übliche Methode zum Bereitstellen eines Springboot-Projekts auf einem Server besteht darin, es in ein War-Paket zu packen und in Tomcat bereitzustellen, oder es in ein JAR-Paket zu packen und das integrierte, einfach auszuführende Paket direkt zu verwenden. Viele Leute packen es jetzt in ein War-Paket und stellen es in Tomcat bereit. Obwohl diese Methode in Ordnung ist, ist die anschließende Wartung problematischer. Laut den offiziellen Anweisungen ist die Bereitstellung per Jar die beste Methode, aber das wirft ein weiteres Problem auf: Wenn mehrere Spring-Boot-Projekte gleichzeitig bereitgestellt werden und die Ports unterschiedlich sind, wie kann dann über den Domänennamen auf sie zugegriffen werden? Als nächstes wird Nginx benötigt. Nginx ist ein leistungsstarker HTTP- und Reverse-Proxy-Server sowie ein IMAP-/POP3-/SMTP-Server. Es eignet sich sehr gut für die Bereitstellung von Springboot. Die Installation von Nginx ist hier kein Tutorial. Die Hauptkonfiguration von nginx.conf ist angegeben

Probe 1;

Server {
  hören Sie 80;
  Servername 127.0.0.1;
  access_log Protokolle/Buch.log;
  Fehlerprotokollprotokolle/Buch.Fehler;
 
  #Leiten Sie die /wx-service-Anforderung an http://127.0.0.1:8011/wx-service weiter, um den Verarbeitungsort /wx-service { zu erreichen.
    Proxy_Set_Header Host $host;
    proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
    Proxy-Passwort http://127.0.0.1:8011/wx-service;
  }
 
  #Leiten Sie die /bootdo-Anforderung an http://127.0.0.1:8012/bootdo weiter, um den Speicherort /bootdo { zu verarbeiten.
    Proxy_Set_Header Host $host;
    proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
    Proxy-Passwort http://127.0.0.1:8012/bootdo;
  }
 
  #Leiten Sie die /xcloud-service-Anforderung an http://127.0.0.1:8013/xcloud-api weiter, um den Verarbeitungsort /xcloud-service { zu erreichen.
    Proxy_Set_Header Host $host;
    proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
    Proxy-Passwort http://127.0.0.1:8013/xcloud-api;
  }
 
  #Leiten Sie die /eureka-service-Anforderung an http://127.0.0.1:8081/eureka-service weiter, um den Verarbeitungsort /eureka-service { zu erreichen.
    proxy_pass http://127.0.0.1:8081/eureka-service; #Denken Sie daran, den Port hier auf das entsprechende Projekt zu ändern proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    Proxy_set_header X-Weitergeleitet-Proto $scheme;
    proxy_set_header X-Weiterleitungsport $server_port;
  }
 
  #Leite die /xcloud-api-Anforderung an http://127.0.0.1:8082/xcloud-api weiter, um den Verarbeitungsort /xcloud-api { zu erreichen.
    proxy_pass http://127.0.0.1:8082/xcloud-api; #Denken Sie daran, den Port hier auf das entsprechende Projekt zu ändern proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    Proxy_set_header X-Weitergeleitet-Proto $scheme;
    proxy_set_header X-Weiterleitungsport $server_port;
  }
}

Beispiel 2:

 Server {
    hören Sie 80;
    Servername localhost;
    #Zeichensatz koi8-r;

    #access_log Protokolle/Host.access.log Haupt;

    Standort / {
      Stamm-HTML;
      index.html index.htm index.php;
    }
    
    #Leiten Sie die /wvv-Anfrage an http://127.0.0.1:1992/wvv weiter, um den Verarbeitungsort /wvv { zu erreichen.
    Proxy_Set_Header Host $host;
    proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
    Proxy-Passwort http://127.0.0.1:1992/wvv;
  }
 }

Wenn Sie mehrere SpringBoot-Projekte bereitstellen, können Sie die folgende Konfiguration mehrmals hinzufügen, solange Sie sie in einen anderen Pfad ändern

#Leiten Sie die /wvv-Anfrage zur Verarbeitung an http://127.0.0.1:1991/project weiter

    Standort /Projekt{
    Proxy_Set_Header Host $host;
    proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for;
    Proxy-Passwort http://127.0.0.1:1991/Projekt;
  }

Ändern Sie den Port von nginx auf Port 80, und Sie können direkt darauf zugreifen. Der Domänenname kann localhost sein, was die lokale Lokalisierung/XXX darstellt. Dies dient zur Konfiguration der Portweiterleitung von nginx. Sie können so viele Projekte konfigurieren, wie Sie möchten. Sie können die Projekte hier auch in Tomcat konfigurieren. Führen Sie gemäß der obigen Konfiguration ./nginx -s reload im sbin-Verzeichnis aus, um die nginx-Konfiguration zu aktualisieren, und dies wird wirksam.

Hier ist ein getestetes und effektives Spring-Boot-Schnellneustart-Shellskript

export JAVA_HOME=/usr/local/java/jdk1.8.0_162
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 
Port=8081
JarName=clouddo-server.jar
LogsPatch=./logs_$Port
 
 
ID=`ps -ef | grep $Port | grep -v "grep" | awk '{print $2}'` 
echo $ID 
Echo "---------------" 
für ID in $ID 
Tun 
töten -s 9 $id 
echo "$id getötet" 
Erledigt 
Echo "---------------" 
 
rm -rf $LogsPatch
mkdir $LogsPatch
 
export LANG=zh_CN.UTF-8
 
setze -m 
 
nohup java -jar -Dlogging.path=$LogsPatch $JarName>$LogsPatch/catlina.out 2>&1 &
 
tail -f $LogsPatch/catlina.out

Speichern Sie es und benennen Sie es als xx.sh

Es wird empfohlen, unter nginx einen separaten Ordner mit dem Namen des Projekts zu erstellen, das JAR-Paket darin abzulegen und dann das JAR-Paket zu starten.

java -jar revenue-1.0.jar >revenue.txt &

Denken Sie daran, dass das Springboot-Projekt in der Konfigurationsdatei konfiguriert werden muss

Server:
Kontextpfad: /xcloud-api

Die Standardeinstellung für Spring Boot ist /, sodass Sie die Indexseite direkt über http://ip:port/ aufrufen können. Wenn wir jedoch mehrere Projekte über nginx konfigurieren möchten, müssen wir den Kontextpfad für jedes Projekt separat angeben.

Erstellen Sie einen neuen Ordner im Serververzeichnis entsprechend Ihren persönlichen Vorlieben, um das von Spring-Boot gepackte JAR und das Neustartskript ähnlich diesem zu speichern

Dies erleichtert die Verwaltung des Protokollverzeichnisses, also des Protokollordners, der nach dem Ignorieren des Startskripts generiert wird. Ein Projekt entspricht einem Ordner, der das Projekt-JAR und ein Shell-Skript zum Neustarten enthält.

Auf diese Weise können Sie mehrere Springboot-Projekte gleichzeitig im Hintergrund starten und über einen Domänennamen auf diese Projekte zugreifen. Wenn Sie die Protokolle in Echtzeit anzeigen möchten, gehen Sie bitte in das Protokollverzeichnis jeder Projektdatei und führen Sie Folgendes aus:

Sie können es mit tail -f catlina.out überprüfen. Wenn es einen Mangel gibt, weisen Sie mich bitte darauf hin und verzeihen Sie mir ...

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:
  • Spring Boot implementiert eine ultraleichte Gateway-Methode (Reverse Proxy, Weiterleitung)
  • Analyse des Lastausgleichs- und Reverse-Proxy-Implementierungsprozesses bei Spring Boot2X
  • Springboot implementiert die VNC-Reverse-Proxy-Funktion

<<:  Workerman schreibt den Beispielcode des MySQL-Verbindungspools

>>:  MySQL 8.0.19 Installations-Tutorial

Artikel empfehlen

Detaillierte Erklärung der atomaren DDL-Syntax von MySQL 8.0

Inhaltsverzeichnis 01 Einführung in Atomic DDL 02...

Objektorientierte Programmierung mit XHTML und CSS

<br />Wenn XHTML und CSS nur objektorientier...

Detaillierte Erklärung der Vue-Komponenten

<Text> <div id="Wurzel"> &l...

Vergleich zwischen Node.js und Deno

Inhaltsverzeichnis Vorwort Was ist Deno? Vergleic...

MySQL-Datentabellenpartitionierungsstrategie und Vor- und Nachteileanalyse

Inhaltsverzeichnis Warum brauchen wir Partitionen...

Detaillierte Erklärung der MySQL 30-Militärregeln

1. Grundlegende Spezifikationen (1) Es muss die I...

Details zur Verwendung von Klassenstilen in Vue

Inhaltsverzeichnis 1. Boolesche Werte 2. Ausdruck...