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

推薦する

テキストエリア テキストエリアの幅と高さ 幅と高さの自動適応実装コード

コードをコピーコードは次のとおりです。 <HTML> <ヘッド> <T...

nginx で第 3 レベルドメイン名を設定する方法の例

問題の説明nginx を設定することで、異なるポートを介して異なる Web アプリケーションにアクセ...

カスタムスクロールバー効果を実現するJavaScript

実際のプロジェクトでは、上下のスクロール バーと左右のスクロール バーは DIV 内にないため、右の...

GZIP 圧縮 Tomcat と Web パフォーマンスの改善プロセス図

1. はじめに最近、あるプロジェクトに取り組んでいたのですが、サーバーからクライアントに返される J...

CSS アニメーション プロパティの使用方法とサンプル コード (transition/transform/animation)

開発中、優れたユーザー インターフェイスには常にいくつかのアニメーションが組み込まれます。 CSS ...

Linux で unzip コマンドを使用して複数のファイルを解凍する方法

Linuxにunzipコマンドがない問題の解決策unzipコマンドを使用して.zipファイルを解凍す...

HTML と CSS を書くための 6 つの最も効果的な方法

この記事では、効率を向上させ、時間を節約することを願って、最も効果的な 6 つの方法を紹介します。 ...

Ubuntu 16.04 で MySQL マスター スレーブ同期を設定する方法

準備1. マスターとスレーブのデータベースのバージョンは一致している必要があります2. マスターデー...

Docker ベースのよく使われる CentOS7 イメージの概要

目次1 Dockerをインストールする2 国内ミラーソースの設定3 中国語環境基本版Centos7イ...

Nginx ログのカスタマイズとログ バッファの有効化の詳細な説明

序文ウェブサイトのアクセス元をカウントしたい場合は、PHP を使用して情報を取得してデータベースに記...

ウェブフロントエンド開発者が知っておくべき 9 つの実用的な CSS プロパティ

1. 角を丸くする今日の Web デザインは、常に最新の開発テクノロジーに追随しており、HTML5 ...

15行のCSSコードがAppleデバイスをクラッシュさせる可能性があり、最新のiOS 12も例外ではない

たった15行のCSSでiPhoneがクラッシュするWire のセキュリティ研究者 Sabri Had...

CSS 疑似要素を使用して複数の連続する要素のスタイルを制御する方法

CSS 疑似要素を使用して要素を制御する場合、一部の要素のスタイルを変更する必要があることがよくあり...

CSS3はマスク連打機能を実現する

最近Bステーションでスマートアンチブロッキング弾幕と呼ばれる弾幕エフェクトを見ました。これは伝説のマ...

Dockerでホストファイルをカスタマイズする方法について簡単に説明します

目次1. コマンド2. docker-compose.yml 3. Dockerファイル4. 直接変...