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 インストールチュートリアル

推薦する

おすすめの無料英語手書きフォント20選

Jellyka Beesアンティーク手書き [ank]* ジェリーカ・カティカップケーキ LHF ジ...

IE7 互換モードで IE8 を有効にするコード

最も人気のあるタグはIE8ですブラウザベンダーはバージョンアップデートのリリースに躍起になっている一...

浮遊要素によって引き起こされる問題と解決策の詳細な説明

1. 問題複数のフローティング要素は親要素の幅を拡張できず、親要素の高さが 0 になる可能性がありま...

Vuex でゲッターとアクションを使用するための追加手順

予備的注釈1.Vue2.xとVue3.xの違い: Vue 3.x にはヘルパー関数はありません。 V...

Dockerコンテナのインポ​​ートとエクスポートに関するチュートリアル

背景Docker の人気は、コンテナの共有と移植が容易であることと密接に関係しています。ユーザーは、...

Docker コンテナを他のサーバーに移行する 5 つの方法

多くの場合、移行は避けられません。ハードウェアのアップグレード、データ センターの変更、古いオペレー...

VMware 仮想マシン (CentOS7 イメージ) を使用して Linux をインストールする

1. VMwareのダウンロードとインストールリンク: https://www.jb51.net/s...

MySQL での Join の使用に関する詳細な説明

前の章では、1 つのテーブルからデータを読み取る方法を学習しました。これは比較的簡単ですが、実際のア...

Linux で cmake を使用して MySQL をコンパイルおよびインストールするための詳細なチュートリアル

1. cmakeをインストールする1. cmakeの圧縮パッケージを解凍する [root@mysql...

Nginx 経由で Tomcat9 クラスターを構築し、セッション共有を実現する

Nginx を使用して Tomcat9 クラスターを構築し、Redis を使用してセッション共有を実...

div ボックス モデルの使用経験の概要

ボックスモデルの計算<br />マージン + ボーダー + パディング + コンテンツC...

CSS3で線形グラデーションを実装するためのコードの詳細な説明

序文デモでは古いバージョンのブラウザのグラデーションが実装されています[IE9-]。 IE9 より前...

Linux Jenkins 構成スレーブノード実装プロセス図

序文: Jenkins のマスター スレーブ分散アーキテクチャは、主に、Jenkins に単一ポイン...

HTML テーブル タグ チュートリアル (47): ネストされたテーブル

<br />このページでは、テーブルをネストすることで組版を実現しています。つまり、1 ...

ブラウザの自動更新を実装するReactサンプルコード

目次フロントエンドルーティングとは何ですか?フロントエンドルーティングを実装するにはどうすればいいで...