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. 原則の概要クエリキャッシュシステム変数1. クエリキャッシュを持つ2. クエリキャッシュ制...

MySQL 5.7 でブロックポジショニング DDL の問題を解決する

前回の記事「MySQL テーブル構造の変更、メタデータ ロックを知っておく必要があります」では、MD...

オブジェクトアニメーションによってブロックされずにオブジェクトに div を表示する方法

今日はメニューボタンを作りました。マウスをボタンに移動するすると、ドロップダウンサブメニューが表示さ...

Ubuntu インストール cuda10.1 ドライバ実装手順

1. cuda10.1をダウンロードします。 NVIDIA 公式ウェブサイト リンク: https:...

広告を閉じる効果を実現するJavascript

参考までに、Javascript を使用して広告を閉じる方法に関するケース スタディを示します。詳細...

Docker ケース分析: Redis サービスの構築

目次1 マウントディレクトリとファイルを作成する2 Redisイメージを取得する3 コンテナを作成し...

Webフロントエンドのパフォーマンス最適化

ウェブフロントエンド最適化のベストプラクティス: コンテンツWebフロントエンド最適化のベストプラク...

MySQL で結果を選択して更新を実行する例のチュートリアル

1. 単一テーブルクエリ -> 更新 テーブル名の更新 フィールド1=新しい値1、フィールド2...

Vue3におけるキーの役割と動作原理についての簡単な説明

このキー属性の機能は何ですか?まずは公式の説明を見てみましょう。 kekey 属性は主に、新しいノー...

Vue プロジェクトで axios リクエストを使用する方法

目次1. インストール2. カプセル化に問題はない3. ファイルを作成する4. アドレス設定をリクエ...

InnoDB エンジンの redo ファイルのメンテナンス方法

InnoDB REDO ログ ファイルのサイズと数を調整する場合は、次の手順に従います。 1. My...

JavaScriptは、マウスが通過したときにドロップダウンボックスを表示するように実装します。

この記事では、マウスがドロップダウンボックスの上を通過するときにドロップダウンボックスを表示するため...

jsはクリックしてカードを切り替える機能を実現します

この記事の例では、クリックしてカードを切り替える機能を実現するためのjsの具体的なコードを共有してい...

IE6かどうかを判定する最短JS(IEの書き方)

ブラウザが IE のどのバージョンであるかを検出するためによく使用される JavaScript コー...

MySQL 8.0.12 簡単インストールチュートリアル

この記事では、MySQL 8.0.12のインストールチュートリアルを参考までに紹介します。具体的な内...