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

推薦する

JavaScript のコールバック関数の理解と使用

目次概要コールバックまたは高階関数とは何ですか?コールバック関数はどのように機能しますか?コールバッ...

Nginx をベースに特定の IP への短期アクセス数を制限する

特定の期間内に特定の IP へのアクセス回数を制限する方法は、特に悪意のある DDOS 攻撃に直面し...

Windows で MySQL データベースを別のディスクに移動する

序文今日、MySQL をインストールしたところ、データベース ストレージがデフォルトで C ドライブ...

JavaScript プロトタイプとプロトタイプチェーンの深い理解

目次1. プロトタイプとは何ですか? 2. プロトタイプ__プロト__ 4. コンストラクター5. ...

デプロイから基本操作までDocker Swarm

Docker SwarmについてDocker Swarm は次の 2 つの部分で構成されます。 D...

MySQL 5.7.18 のダウンロードとインストールの詳細な手順

MySql ダウンロード1. 公式サイトを開き、ダウンロード パスを見つけます。ダウンロード アドレ...

Vue ページ内の公開マルチタイプ添付画像アップロード領域と適用可能な折りたたみパネル (サンプルコード)

フロントエンド プロジェクトでは、添付ファイルのアップロードは非常に一般的な機能であり、ほぼすべての...

Vue+swiperでタイムライン効果を実現

この記事では、タイムライン効果を実現するためのvue+swiperの具体的なコードを参考までに共有し...

jsvc を使用して tomcat を起動する方法 (通常のユーザーとして実行)

jsvc の紹介実稼働環境では、Tomcat はデーモン モードで実行する必要があります。Tomc...

Vue3でelement-plusを使用する方法の詳細な説明

目次1. インストール2. main.jsにインポートする3. 使用Vue3がリリースされてからしば...

Dockerはnginxをデプロイし、フォルダとファイル操作をマウントします

この間、私は docker を勉強していたのですが、nginx をデプロイするときに行き詰まりました...

Centos7でのSambaサーバー構成(実戦)

サンバの概要Samba は、Linux および UNIX システム上で SMB プロトコルを実装する...

JavaScript シングルスレッドと非同期の詳細

目次1. タスクキュー2. 混乱を招く問題を説明する1. setTimeout(f1,0)とは何です...

ReactでのDOM操作の実装

目次前の単語使用シナリオ参照HTML要素クラスコンポーネント機能コンポーネント[DOMノードを親コン...