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

推薦する

WeChatアプレットコンポーネント開発:視覚的な映画座席選択機能

目次1. はじめに1. コンポーネントデータ2. コンポーネントページのレイアウト1. ロゴエリアの...

vue+elementuiは、共有箇条書きボックスの追加と変更の完全なコードを実装します。

目次1. 新しいII. 変更element-ui は、Ele.me のフロントエンド チームが開発者...

Nginx プロキシを使用してインターネットを閲覧する方法

私は通常、Tomcatや他のアプリケーションのリバースプロキシとしてnginxを使用しています。実際...

JSインターセプト文字列の3つの方法の詳細な説明

JS には、文字列をインターセプトするための 3 つのメソッド、 slice() 、 substri...

ウェブデザインと制作の一般的な原則をまとめる

<br />関連記事: Web コンテンツ ページ作成に関する 9 つの実用的な提案、W...

JavaScript の矢印関数と通常の関数の違いの詳細な説明

この記事では、JavaScriptにおけるアロー関数と通常の関数の違いについて解説します。具体的な内...

コピー&ペーストはパッケージングの敵です

OO、デザイン パターン、および多くのオブジェクト指向の原則について話す前に、まず 1 つのことを習...

2013年のウェブデザインUIの最もホットなトレンド最も人気のあるUIデザイン

時は経つのが早く、わずか 6 日後には 2013 年が歴史になります。今年は、いわゆるトレンドが多す...

MySQL学習データベース操作DML初心者向け詳細解説

目次1. ステートメントを挿入する1.1 行を挿入する1.2 複数行を挿入する1.3 クエリステート...

Win10 での MySQL 8.0.16 のインストールと設定のチュートリアル

1. MySQL 8.0.16を解凍する次の図に示すように、解凍後にdadaフォルダとmy.ini構...

MySQL はどのようにしてマスターとスレーブの一貫性を確保するのでしょうか?

目次MySQLマスタースレーブの基本原理3つのbinlog形式の比較混合形式のバイナリログが存在する...

React+axios は github 検索ユーザー機能を実装します (サンプル コード)

負荷リクエスト成功リクエストに失敗しました cmdをクリックし、ファイルパスでEnterキーを押しま...

MySQL のデータの偶発的な削除の解決策と kill ステートメントの原則

mysql が誤ってデータを削除しました削除ステートメントを使用して誤ってデータ行を削除する誤ってデ...

MySQLテーブルのフィールドと関連属性をエクスポートする手順

データベース内のテーブルのフィールドとプロパティをエクスポートし、テーブルを作成してWordに保存す...

...