Nginx リバース プロキシ springboot jar パッケージ プロセス分析

Nginx リバース プロキシ springboot jar パッケージ プロセス分析

Springboot プロジェクトをサーバーにデプロイする方法としては、war パッケージにパッケージ化して Tomcat にデプロイするか、jar パッケージにパッケージ化して組み込みの簡単に実行できるパッケージを直接使用する方法が一般的です。現在では、war パッケージにパッケージ化して Tomcat にデプロイする人が多くなっています。この方法も問題ありませんが、その後のメンテナンスが面倒になります。公式の説明によると、jar のデプロイが最善の方法ですが、これにより別の問題が発生します。複数の spring-boot プロジェクトが同時にデプロイされ、ポートが異なる場合、ドメイン名でそれらにアクセスするにはどうすればよいでしょうか。次に、Nginx が必要です。Nginx は、高性能な HTTP およびリバース プロキシ サーバーであり、IMAP/POP3/SMTP サーバーでもあります。これはSpringbootのデプロイに非常に適しています。Nginxのインストールはここではチュートリアルではありません。nginx.confの主な設定は次のとおりです。

サンプル1;

サーバー{
  聞く 80;
  サーバー名 127.0.0.1;
  access_log ログ/book.log;
  error_log ログ/book.error;
 
  # /wx-service リクエストを http://127.0.0.1:8011/wx-service に転送して処理場所 /wx-service {
    proxy_set_header ホスト $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    プロキシパス http://127.0.0.1:8011/wx-service;
  }
 
  # /bootdo リクエストを http://127.0.0.1:8012/bootdo に転送して処理場所 /bootdo {
    proxy_set_header ホスト $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    プロキシパス http://127.0.0.1:8012/bootdo;
  }
 
  # /xcloud-service リクエストを http://127.0.0.1:8013/xcloud-api に転送して処理場所 /xcloud-service {
    proxy_set_header ホスト $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    プロキシパス http://127.0.0.1:8013/xcloud-api;
  }
 
  # /eureka-service リクエストを http://127.0.0.1:8081/eureka-service に転送して処理場所 /eureka-service {
    proxy_pass http://127.0.0.1:8081/eureka-service; #ここでポートを対応するプロジェクトに変更することを忘れないでください proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Port $server_port;
  }
 
  # /xcloud-api リクエストを http://127.0.0.1:8082/xcloud-api に転送して処理場所 /xcloud-api {
    proxy_pass http://127.0.0.1:8082/xcloud-api; #ここでポートを対応するプロジェクトに変更することを忘れないでください proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Port $server_port;
  }
}

例2:

 サーバー{
    聞く 80;
    server_name ローカルホスト;
    #文字セット koi8-r;

    #access_log ログ/host.access.log メイン;

    位置 / {
      ルートhtml;
      インデックス index.html index.htm index.php;
    }
    
    # /wvv リクエストを http://127.0.0.1:1992/wvv に転送して処理場所 /wvv {
    proxy_set_header ホスト $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    プロキシパス http://127.0.0.1:1992/wvv;
  }
 }

複数のSpringBootプロジェクトをデプロイする場合は、異なるパスに変更する限り、次の構成を複数回追加できます。

# /wvv リクエストを http://127.0.0.1:1991/project に転送して処理します

    場所 /プロジェクト{
    proxy_set_header ホスト $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    プロキシパス http://127.0.0.1:1991/project;
  }

nginx のポートを 80 に変更すると、直接アクセスできるようになります。ドメイン名は localhost にすることができます。これはローカル localtion/XXX を表します。これは nginx ポート転送を構成するためのものです。必要な数のプロジェクトを構成できます。ここで tomcat のプロジェクトを構成することもできます。上記の構成に従って、sbin ディレクトリで ./nginx -s reload を実行して nginx 構成を更新すると、有効になります。

これはテスト済みで効果的なSpring-Bootクイック再起動シェルスクリプトです。

JAVA_HOME=/usr/local/java/jdk1.8.0_162 をエクスポートします。
PATH=$JAVA_HOME/bin:$PATH をエクスポートします
エクスポート CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
 
ポート=8081
JarName=clouddo-server.jar
LogsPatch=./logs_$ポート
 
 
ID=`ps -ef | grep $Port | grep -v "grep" | awk '{print $2}'` 
$IDをエコーする 
エコー "--------------" 
$IDのID 
する 
キル -s 9 $id 
echo "$id を強制終了しました" 
終わり 
エコー "--------------" 
 
rm -rf $ログパッチ
mkdir $LogsPatch
 
エクスポートLANG=zh_CN.UTF-8
 
-m を設定する 
 
nohup java -jar -Dlogging.path=$LogsPatch $JarName>$LogsPatch/catlina.out 2>&1 &
 
tail -f $LogsPatch/catlina.out

xx.shという名前を付けて保存します。

nginx の下にプロジェクト名を冠した別のフォルダを作成し、そこに jar パッケージを配置してから、jar パッケージを起動することをお勧めします。

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

Springbootプロジェクトは設定ファイルで設定する必要があることに注意してください。

サーバ:
コンテキストパス: /xcloud-api

Spring Boot のデフォルト設定は / なので、http://ip:port/ からインデックス ページに直接アクセスできます。ただし、nginx を介して複数のプロジェクトを構成する場合は、プロジェクトごとに context-path を個別に指定する必要があります。

個人の好みに応じてサーバーディレクトリに新しいフォルダを作成し、spring-bootによってパッケージ化されたjarと次のような再起動スクリプトを保存します。

これにより、起動スクリプトが無視された後に生成されるログ フォルダーである logs ディレクトリの管理が容易になります。1 つのプロジェクトは、プロジェクト jar と再起動シェル スクリプトを含むフォルダーに対応します。

この方法では、複数のSpringbootプロジェクトを同時にバックグラウンドで起動し、ドメイン名を介してこれらのプロジェクトにアクセスできます。ログをリアルタイムで表示したい場合は、各プロジェクトファイルのlogsディレクトリに移動して、以下を実行してください。

tail -f catlina.out で確認できます。不備がありましたらご指摘いただければ幸いです。ご容赦ください。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Spring Boot は超軽量ゲートウェイ方式 (リバースプロキシ、転送) を実装します
  • Spring boot2X ロードバランシングとリバースプロキシ実装プロセス分析
  • SpringbootはVNCリバースプロキシ機能を実装する

<<:  Workermanはmysql接続プールのサンプルコードを書きます

>>:  MySQL 8.0.19 インストールチュートリアル

推薦する

MySQLテーブルのテーブル構造を素早く変更する方法

MySQL テーブルのテーブル構造をすばやく変更する - 「MySQL 管理」から抜粋 ALTER ...

2つのシンプルなメニューナビゲーションバーの例

メニューバーの例 1: コードをコピーコードは次のとおりです。 <!DOCTYPE html ...

Vue のトランジション効果とアニメーショントランジションの使用例の詳細な説明

目次遷移フック関数カスタム遷移クラス名遷移グループの使用まとめまずは例を見てみましょうコードは次のと...

JavaScript を学ぶときに知っておくべき 3 つのヒント

目次1. 魔法の拡張演算子1. 配列をコピーする2. 配列を結合する3. オブジェクトを展開する2....

Baidu百科事典UIの開発動向について議論する

<br />百度百科事典の正式版がついにオンラインになりました。2年間の「テスト版」の帽...

CSSアニメーションを使用して背景のシームレスな無限ループを実装する例

1. 需要絵が左から右へ無限ループで動く2. コードモバイルデバイスに適用されているため、rem 単...

jQueryはテーブルのシームレスなスクロールを実現します

この記事の例では、テーブルのシームレスなスクロールを実現するためのjQueryの具体的なコードを参考...

パーソナライズされた検索エンジンを使用して、必要なパーソナライズされた情報を検索します

現在、多くの人がインターネット上で生活しており、インターネットで情報を検索することは日常的な作業とな...

JavaScript は最大値と最小値のアルゴリズムを通じて AI 三目並べゲームを実装します

では、早速スクリーンショットを実行してみましょう。黒い駒はプレイヤーの位置、赤い駒はコンピュータの位...

Docker を使用して Redis マスター スレーブ レプリケーション クラスターを構築する

マスタースレーブレプリケーションモードのクラスターでは、通常、1 つのマスターノードと 2 つ以上の...

Webpack-cliが正常にインストールされたら、詳細についてはwebpack -vエラーケースを確認してください。

目次質問1. webpack webpack-cliをインストールする2. webpackのバージョ...

MySQL 8.0.22.0 のダウンロード、インストール、設定方法のグラフィックチュートリアル

MySQL 8.0.22のダウンロード、インストール、設定方法、参考までに具体的な内容は次のとおりで...

Navicat を使用して csv ファイルを MySQL にインポートする

この記事では、参考までに、Navicatを使用してCSVファイルをMySQLにインポートするための具...

MySQL マスタースレーブ同期における server-id の例の詳細な説明

序文MySQL クラスターを構築する場合、当然のことながら、データの一貫性を確保するために、データベ...