Apacheリクエスト(ポート80)をTomcat(ポート8080)に転送しますか?


8

などの通常のWebサイトURLを介してTomcatアプリケーションを実行したいwww.xyz.com。このドメインのルートをWebアプリケーションのベースディレクトリとして機能させたいので、への各リクエストはにwww.xyz.com/a/b/cなりwww.abc.com:8080/myApp/a/b/cます。理想的には、私はこれを透過的に行うことができ、特定のWebアプリケーションに対してのみです。

www.abc.com:8080 それでもリクエストに応答する必要があります。

これを実現するにはどうすればよいですか?

回答:


14
ProxyPass        / http://www.abc.com:8080/myApp/
ProxyPassReverse / http://www.abc.com:8080/myApp/

mod_proxyの詳細を読む


これはこれを行うための最良の解決策です
Mike

1
「特定のWebアプリケーションのみ」の側面に対処するには、リダイレクトパスを深くします。したがって:ProxyPass / a / b / c abc.com:8080/myApp/a/b/c ProxyPassReverse / a / b / c abc.com:8080/myApp/a/b/c 特定のパスを除くすべてをプロキシするには、そのままにします。 ProxyPassReverse行ですが、ProxyPass行をRewriteRulesに置き換え([P]オプションを使用してリダイレクトではなくプロキシするようにしてください)、以前のルールでこれらのパスをプロキシしないようにします。するRewriteRule / notproxied - [L]のRewriteRule /(.*)abc.com:8080/myApps/$1 [P]にProxyPassReverse / abc.com:8080/myApp
ジェレミーM

これらの行はどこに追加しますか?
ミナマイケル

@MinaMichael mod_proxyのドキュメントの状態:コンテキスト:サーバ設定ファイル、バーチャルホスト、ディレクトリ
ptman

3

これを行うためのより簡単な方法は、Apache confファイルに仮想ホストエントリを追加することです。通常は/ etc / httpd / confにあります。仮想ホストセクションの最後に次のように追加します。

<VirtualHost X.X.X.X:80>
ServerName tomcatpage.yourdomain.com
ServerAlias tomcatpage.yourdomain.com
Redirect permanent / http://tomcatpage.yourdomain.com:8080/
</VirtualHost>

Apacheサービスを再起動すれば完了です。


3

これを行うには、Apacheでmod_rewriteを使用できます。Apacheにmod_rewriteをロードし、www.xyz.com vhostに次のルールを追加します。

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1

これは魔法をかけるはずです。

mod_rewriteの詳細については、こちらをご覧ください

編集:ブラウザでサイト名を保持するには、RewriteRuleの最後に[P]を追加するだけでmod_proxyも使用します。

RewriteRule ^/(.*) http://www.abc.com:8080/myApp/$1 [P]

これにより、Apacheは単にURLを書き換えるのではなく、そのURLのプロキシとして機能するようになります。


これにより、ブラウザが実際にリダイレクトされます。これは機能しますが、サイトがwww.xyz.comユーザーの側から表示された方がよいと思います。
ステファンケンドール

1
同様にmod_proxyを使用し、RewriteRuleの最後に次のように[P]を追加します:RewriteRule ^ /(。*)abc.com:8080/myApp/$1 [P]。この情報を含めるために、上記の回答も編集しました。
マルコラモス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.