web-dev-qa-db-ja.com

ProxyPassReverseをクリックすると、プロキシURLが表示されません

NASで実行されているパーソナルWebサーバーに次の仮想ホストがあります。mydomain.comと* .mydomain.comの両方をNASにリダイレクトするためのdynDNSセットアップがあります。

<VirtualHost *:80>
    ServerName redir.example.com
    ProxyPass /pbay/ http://www.anothersite.example.com/
    ProxyPassReverse /pbay/ http://www.anothersite.example.com/
</VirtualHost>

redir.example.com/pbay/にアクセスしようとすると、www.anothersite.example.com/にリダイレクトされますが、アドレスバーには引き続きredir.example.com/pbay/と表示されます。しかし、サーバー上で別のリクエストが発生するサイトで何かを行うと、アドレスバーが実際の(anothersite.example.com)アドレスに変わります。常にhttp://redir.example.com/のみを表示したい。

これがProxyPassReverseの目的だと思いました。どうすればこれを達成できますか?

4
Ram Gogada

また、 mod_proxy_html を有効にする必要があります。 ProxyPassReverseは、HTTPヘッダーのみを書き換えます。 HTMLのコンテンツ(絶対リンクなど)を書き換えるには、追加モジュールを有効にする必要があります。

ProxyPassReverseのドキュメント は、これをかなり明確に述べています。

このディレクティブにより、Apache httpdはHTTPリダイレクト応答のLocationContent-LocationおよびURIヘッダーのURLを調整できます。これは、Apache httpdがリバースプロキシ(またはゲートウェイ)として使用され、リバースプロキシの背後に留まるバックエンドサーバーでのHTTPリダイレクトのためにリバースプロキシを迂回しないようにする場合に不可欠です。

上記で具体的に説明したHTTP応答ヘッダーのみが書き換えられます。 Apache httpdは、他の応答ヘッダーを書き換えたり、デフォルトでHTMLページ内のURL参照を書き換えたりしません。これは、プロキシされたコンテンツに絶対URL参照が含まれている場合、プロキシをバイパスすることを意味します。プロキシに一致するようにHTMLコンテンツを書き換えるには、 mod_proxy_html をロードして有効にする必要があります。

1