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 プロジェクトでよく使用されるツール機能の概要

推薦する

LeetCode の SQL 実装 (175. 2 つのテーブルの結合)

[LeetCode] 175.2つのテーブルを結合する表: 人物+-------------+--...

Nginx ドメイン転送の使用シナリオ コード例

シナリオ 1: サーバーの制限により、外部に開かれているポートは 1 つだけですが、別の外部ネットワ...

CSS 兄弟要素フローティング分析の概要

float:左/右/なし; 1. 同じレベルフローティング(1)ブロックレベル要素を同じ行に表示する...

Windows 10 での MySQL 8.0.19 のインストールと設定のチュートリアル

来学期にMySQLを勉強します。事前に自宅で練習していませんでした。インストールに時間がかかるとは思...

モバイル端末での Vue2.x Picker のグローバル呼び出し実装

目次ピッカーコンポーネントとはピッカーコンポーネントの問題解決オプションの説明解決ディレクトリ部門P...

Reactのヒントはフックの依存関係の問題を解消する方法を教えます

reactプロジェクトで非常に一般的なシナリオ: const [watchValue、setWatc...

テーブルを作成するための MySQL SQL ステートメントの詳細な概要

mysql テーブル作成 SQL ステートメントMySQL テーブルを作成するための一般的な SQL...

DIV+CSS命名規則の詳細な説明はSEO最適化に役立ちます

1. CSSファイルの命名規則提案: 文字、_、-、数字を使用します。文字で始まる必要があり、純粋な...

星のきらめき効果を実現するネイティブ js

この記事の例では、星のきらめき効果を実現するためのjsの具体的なコードを共有しています。具体的な内容...

JavaScript による省・市連携効果の実現

この記事では、省と都市間の連携効果を実現するためのJavaScriptの具体的なコードを参考までに共...

シンプルなページング効果を実現するjQuery+Ajax

この記事では、ページング効果を実現するためのjquery+Ajaxの具体的なコードを参考までに紹介し...

Nodejs 組み込み暗号化モジュールを使用してピアツーピアの暗号化と復号化を実現する詳細な説明

暗号化と復号化は、通信のセキュリティを確保するための重要な手段です。すでに多くの暗号化アルゴリズムが...

Chromeブラウザ設定の新バージョンではクロスドメイン実装が可能

序文現在、フロントエンドは主に webpack の devServer の構成を通じてクロスドメイン...

MySQLでルートユーザーのパスワードを変更する方法

方法1: SET PASSWORDコマンドを使用する mysql> username@loca...