Nginx/Httpd リバース プロキシ Tomcat 設定チュートリアル

Nginx/Httpd リバース プロキシ Tomcat 設定チュートリアル

以前のブログでは、Tomcatのサーバーの各コンポーネントの使用について学びました。 Tomcatは他の抗生成サーバーを使用して、HTTPSへのアクセスをプロキシサーバーから実装する必要がありますブラウザによってサポートされていないプロトコル。

一般的なアンチプロキシ サーバーには、haproxy、nginx、httpd などがあります。これらの 3 つのソフトウェアのうち、haproxy と nginx は http プロトコルに基づいて tomcat をプロキシできます。httpd は http プロトコルに基づいて tomcat をプロキシでき、tomcat をプロキシするための ajp プロトコルもサポートしています。tomcat をプロキシするために ajp プロトコルを使用する場合は、httpd で proxy_ajp_module を有効にする必要があります。

1. nginx は tomcat をリバースします

http プロトコルに基づいて tomcat をプロキシする nginx の構成は、基本的に他の Web サーバーの構成と同じです。場所を定義し、対応する URL をバックエンド tomcat サーバーに proxy_pass します。

例: nginx は tomcat の www.test1.com と localhost ホストを逆にします

ヒント: 上記の構成は、アクセス パスがルートに一致する場合、要求が 192.168.0.22:8080 にプロキシされることを意味します。実際、要求が Tomcat に到達した後、対応するホストが存在するかどうかが確認されます。存在する場合は、一致したホストから応答し、そうでない場合は、デフォルトのホストから応答します。明らかに、192.168.0.22 は Tomcat のホストに一致できないため、デフォルトのホスト localhost から応答します。これは、/ へのアクセス要求を仮想ホスト localhost にリバース プロキシすることと同じです。.jsp または .do の末尾に一致するリソースの場合、2 番目の場所を使用して、仮想ホスト www.test1.com への要求がリバース プロキシされます。

検証: 192.168.0.22 にアクセスして、Tomcat の localhost 仮想ホストによって提供されるページにアクセスできるかどうかを確認します。

ヒント: 192.168.0.22 にアクセスすると、ブラウザは Tomcat の localhost によって提供されるホームページを返すことがわかります。

検証: 192..168.0.22/index.jsp にアクセスして、tomcat 上の www.test1.com によって提供されるホームページにアクセスできるかどうかを確認します。

ヒント: 192.168.0.22/index.jsp にアクセスすると、ブラウザーが Tomcat の仮想ホスト www.test1.com によって提供されるホームページに応答することがわかります。

2. httpdはtomcatをリバースする

例: httpd は http プロトコルを使用して tomcat を置き換えます

ヒント:上記の構成は、www.test1.comにアクセスすると、リクエストがhttp://127.0.0.1:8080に逆転することを意味します。 ES HTTPD、およびホストヘッダーはwww.test1.comであり、HTTPDはメッセージをカプセル化します。 0.0.1したがって、クライアントがwww.teste1.comにアクセスすると、デフォルトの仮想ホストから戻ります。

検証: ブラウザを使用して www.test1.com にアクセスし、Tomcat の localhost ページに応答するかどうかを確認します。

ヒント: www.test1.com にアクセスすると、応答は Tomcat の www.test1.com 仮想ホストによって提供されるページではなく、localhost 仮想ホストによって提供されるページであることがわかります。これは、proxypreservehost がオフになっているためです。つまり、クライアントのホスト ヘッダーが Tomcat に渡されません。

proxypreservehost をオフからオンに変更し、httpd を再起動してから、www.test1.com にアクセスして、localhost 仮想ホストのページがまだ返されるかどうかを確認します。

ヒント: 上記の proxypreservehost on の変更は、クライアント ホスト ヘッダーの値をバックエンドの Tomcat に渡すことを意味します。これにより、Tomcat はクライアントから渡されたホスト ヘッダーに応じて、異なる仮想ホスト上のページに応答できます。

検証: httpd サービスを再起動し、www.test1.com にアクセスして、Tomcat の www.test1.com 仮想ホストのページに応答があるかどうかを確認します。

ヒント: ここで www.test1.com にアクセスすると、localhost 仮想ホストのページではなく、www.test1.com 仮想ホストのページに応答することがわかります。これは、httpd がクライアント ホスト ヘッダーの値をバックエンドの tomcat に渡すことを意味します。

テスト: 192.168.0.22 にアクセスして、デフォルトの localhost 仮想ホスト ページにアクセスできるかどうかを確認します。

ヒント: 192.168.0.22 にアクセスすると、応答として Tomcat の localhost 仮想ホスト ページが返されます。これは、httpd がクライアント ホスト ヘッダーの値 192.168.0.22 をバックエンドの Tomcat に渡した後、Tomcat で仮想ホスト 192.168.0.22 が見つからないため、Tomcat がデフォルトの仮想ホスト localhost で httpd に応答し、次にブラウザーに応答するためです。つまり、表示されるのは Tomcat の localhost 仮想ホストのページです。

3. httpdはtomcatの代わりにajpプロトコルを使用する

上記の例では、http プロトコルを使用して Tomcat を表す httpd と、ajp プロトコルを使用して Tomcat を表す httpd の間に本質的な違いはありません。唯一の違いは、http プロトコルを ajp プロトコルに変更し、バックエンドの Tomcat ポート 8080 をポート 8009 に変更することです。残りは同じです。

ヒント: ここで注意すべき点は、httpd が tomcat をプロキシするために ajp プロトコルを使用するということです。 proxy_ajp_module モジュールを使用する必要があります。そうしないと、httpd は ajp プロトコルをサポートしません。

検証: ブラウザでそれぞれ www.test1.com と 192.168.0.22 にアクセスし、Tomcat 内の対応する仮想ホストのページにアクセスできるかどうかを確認します。

ヒント: ajp プロトコルに基づく anti-Tomcat と http に基づく anti-Tomcat を使用した場合のアクセスには違いがないことがわかります。

Nginx/Httpd 逆生成 tomcat 構成チュートリアルに関するこの記事はこれで終わりです。より関連性の高い Nginx/Httpd 逆生成 tomcat 構成コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Windows で負荷分散に Nginx+Tomcat を使用するための完全な手順
  • Tomcat Nginx Redis セッション共有プロセス図
  • Nginx/Httpd ロードバランシング Tomcat 設定チュートリアル
  • Nginx 経由で Tomcat9 クラスターを構築し、セッション共有を実現する
  • Docker を使用して nginx で tomcat クラスターを構築する方法 (画像とテキスト付き)
  • Zabbix を使用して Nginx/Tomcat/MySQL を監視する方法の詳細なチュートリアル
  • vue プロジェクトを nginx/tomcat サーバーにデプロイする実装
  • Nginx+Tomcat 高性能負荷分散クラスタ構築チュートリアル
  • Windows 上で Nginx+Tomcat クラスタを実装するプロセスの分析

<<:  Reactホームページの読み込みが遅い問題のパフォーマンス最適化事例の詳細な説明

>>:  Vue プロジェクトでよく使用されるツール機能の概要

推薦する

MYSQL インストールの解凍バージョンと発生したエラーと解決策

1 インストールMYSQL 公式サイトから対応する解凍バージョンをダウンロードし、必要なディレクトリ...

MySQLデータベースでの値の追加、変更、削除、クリアの例

3. MySQLデータ管理最初の方法:お勧めできません。複雑そうです -- 学生テーブルの grad...

HTMLフォーム属性のreadonlyとdisabledの使い方

1. readonly 読み取り専用属性なので、値を取得できます2. 無効: 無効な属性、値を取得で...

MySQL 8.0 のインストール中に発生した 3 つの小さなエラーの概要

序文これまで当社ではMySQLの5.7シリーズを使用していましたが、バージョン8.0のリリースに合わ...

VMware 仮想マシンで Linux の IP アドレスを表示する方法

1. まず、コンピュータのデスクトップにある VMware アイコンをダブルクリックしてソフトウェア...

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

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

MySQL 5.7.25 圧縮版のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 5.7.25圧縮版のインストールと設定方法を参考までに紹介します。具体的な...

Dockerで複数のSpringbootを実行するための詳細なチュートリアル

Dockerは複数のSpringbootを実行する1番目: ポートマッピング 2番目: メモリサイズ...

知らないかもしれないLinuxのファイル権限管理方法

なぜ権限管理が必要なのでしょうか? 1. コンピュータ リソースは限られているため、コンピュータ リ...

Django プロジェクトを作成して MySQL に接続する方法

1: django-admin.py startproject プロジェクト名2: cd プロジェク...

Vue のフィルターの適用シナリオの詳細な説明

filterは通常、特定の値をフィルターするために使用されます。たとえば、フィールドが空だが、フロン...

MySQL インデックスの正しい使い方とインデックスの原理の詳細な説明

1. はじめになぜインデックスが必要なのでしょうか?一般的なアプリケーション システムでは、読み取り...

HTML フォーマットの json のサンプルコード

さっそく、コードを直接投稿します。具体的なコードは次のとおりです。 <!DOCTYPE htm...

MySQLストアドプロシージャにおけるカーソル(DECLARE)の原理と使い方の詳細な説明

この記事では、例を使用して、MySQL ストアド プロシージャにおけるカーソル (DECLARE) ...

JavaScript の絶妙なスネーク実装プロセス

目次1. HTML構造を作成する2. テーブルを作成する3. ヘビの頭と体を作る4. 食べ物を作る5...