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

Bringen Sie Ihnen bei, wie Sie die Zeigerposition in Javascript erhalten

Die Methode zum Abrufen der Zeigerposition in Jav...

Verwendung und Szenarioanalyse des npx-Befehls in Node.js

Tutorial zur Verwendung von NPX Heute Abend, als ...

So verstehen Sie SELinux unter Linux

Inhaltsverzeichnis 1. Einführung in SELinux 2. Gr...

Einige kleine Methoden, die häufig in HTML-Seiten verwendet werden

Fügen Sie das Tag <Head> hinzu <meta http...

So überprüfen und organisieren Sie Websitedateien mit Dreamweaver8

Was ist der Zweck der Erstellung einer eigenen Web...

Einführung in die Leistungsoptimierung von MySQL-Datenbanken

Inhaltsverzeichnis Warum optimieren? ? Wo soll ic...

Tiefgreifendes Verständnis der Vue-cli4-Routing-Konfiguration

Inhaltsverzeichnis Vorwort - Vue Routing 1. Die g...

Linux Überprüfen Sie den Installationsort der Software einfache Methode

1. Überprüfen Sie den Installationspfad der Softw...

Mysql behält den vorhandenen Inhalt bei und fügt später Inhalte hinzu

Dieser Befehl ändert die Datentabelle ff_vod und ...

Detaillierte Erklärung der Vue-Filter

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

Prozessdiagramm zur Implementierung der Zabbix WEB-Überwachung

Nehmen Sie als Beispiel die WEB-Schnittstelle von...