5

Tomcat に 2 つの異なるコンテキスト パスを持つ 2 つのアプリケーションに対して、Apache Tomcat ProxyPass ディレクティブを構成する際に問題があります。Tomcat は Apache の背後で実行されており、Apache を使用してリクエストを Tomcat にプロキシ パスします。Apache では、コンテキスト パスではなくホスト名を介して両方のアプリケーションにアクセスしたいと考えています。

シナリオ:

トムキャット

https://domain:8443/app1
https://domain:8443/app2

Tomcat では、アプリケーションのコンテキスト パスは app1 と app2 です。

Apache では、次のように両方のアプリケーションを有効にしたいと考えています。

https://app1.host/
https://app2.host/

Apache で、各ドメインの構成を作成しました。

ProxyPass /  https://localhost:8443/app1
ProxyPassReverse / https://localhost:/8443/app1

奇妙なことに、app1 は、コンテキスト パスを使用して apache からのみ利用できます。

https://app1.host/app1

apache ProxyPassモジュールでそのような設定を実現することは可能ですか?

ありがとうございます。

4

2 に答える 2

12

仮想ホスティングを使用して、必要な結果を達成できるはずです。また、HTTPS の代わりに AJP プロトコルを介してリクエストを tomcat に渡すことをお勧めします。これをApache構成に追加してみてください

NameVirtualHost *:443

<VirtualHost *:443>
    ServerName app1.host
    ProxyPass / ajp://localhost:8009/app1/
</VirtualHost>

<VirtualHost *:443>
    ServerName app2.host
    ProxyPass / ajp://localhost:8009/app2/
</VirtualHost>

Tomcat のデフォルトのサーバー設定を変更していない場合、これはそのまま機能するはずです。それ以外の場合は、Tomcat の conf/server.xml ファイルで構成されている AJP ポートを必ず指定してください。次のような行があるはずです。

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

mod_proxy および mod_proxy_ajp モジュールが Apache 構成にロードされていることを確認してください。これは、Apache のインストールによって異なる場合があります。また、以前に構成された 'ProxyPass / ...' の行も削除してください。これらは新しい構成に干渉するためです。これがうまくいくことを願っています。

于 2010-04-21T06:37:06.443 に答える
7

あなたが試すことができます

ProxyPass /  https://localhost:8443/app1/
ProxyPassReverse / https://localhost:8443/app1/

最後の /

于 2012-12-05T17:51:57.323 に答える