外部のWebサイトをリバースプロキシにすることはできますか?
はい、重要な欠点があります。
注:構成を試したときにログにSSL Proxy requested for [...] but not enabled [Hint: SSLProxyEngine]
がありますので、SSLProxyEngine on
を追加しました。
ホストの問題
サーバーへのHTTP/1.1リクエストを行うと、あなたは自動的にリクエストにホスト名を追加します。
[browser] --(Host: authtest.com)--> [apache proxy] --(Host: authtest.com)--> Google
または
[browser] --(Host: authtest.com)--> [apache proxy] --(Host: google.com)--> Google
最初のものは、あなたがProxyPreserveHost On
で得るものです:ときにあなたがそれらのプロキシは、次の2つのpossibilitesを持っています。 Googleサーバーがauthtest.com
のリクエストを処理しない場合は、この行を削除する必要があります。
2番目の場合でも、問題が発生する可能性があります。 ProxyPassReverse
はリダイレクトを処理しますが、指定されたドメインのみを処理します。フランスにいる、google.comはgoogle.fr(別のドメイン)にリダイレクトされ、リバースプロキシはリダイレクトを書き換えません。
他の問題はrefererです:サービスが異なるWebサイトからの画像/ css/jsの要求を見た場合、それは帯域幅リーチングとみなされ、ブロックされる可能性があります。さて、応答のhtmlも書き直す必要があります(mod_proxy_htmlが役に立ちますが、それは銀色の弾丸ではありません)。あなたの例では
パスの問題
、あなたプロキシ<authtest> / <にグーグル> /グーグル。上記のように、サーバが/google
をどこにも追加しない限り、絶対リンク/リソースは動作しません。相対リンク/リソースと同じですが(エッジケースが多い)バックエンドサーバーを所有していた場合は、html/css/jsファイルのURLをチェックすることができます。ここで、jsを使用してブラウザで動的にURLを構築すると、何もできません。
/
〜/
(または/whatever
〜/whatever
)をプロキシできる場合は、ここで多くの問題を回避できます。
は、詳細な説明のためにどうもありがとうございます。私のプロジェクトでは、同じドメイン名、つまりauthTestを使用していて、/ googleとgoogle.com、そして/ fbとFacebookのような異なる場所を使用して、だから私は問題があるときです。 – user7044932