2016-12-02 12 views
0

私のapacheはgoogle.comのような外部URLにリクエストを転送できるように設定されていますが、リバースプロキシは機能しません。外部URLの逆プロキシ - Apache

<VirtualHost *:443> 
ServerName authtest.com 
ProxyRequests Off 
ProxyPreserveHost On 
<Proxy *> 
    Order allow,deny 
    Allow from All 
</Proxy> 
<LocationMatch "/google"> 
    ProxyPass https://www.google.com/ 
    ProxyPassReverse https://www.google.com/ 
</LocationMatch> 
</VirtualHost> 

外部のWebサイトをリバースプロキシにすることはできますか?

答えて

1

外部の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)をプロキシできる場合は、ここで多くの問題を回避できます。

+0

は、詳細な説明のためにどうもありがとうございます。私のプロジェクトでは、同じドメイン名、つまりauthTestを使用していて、/ googleとgoogle.com、そして/ fbとFacebookのような異なる場所を使用して、だから私は問題があるときです。 – user7044932

0

ChechこのGIT Repo 私はGITレポをフォークし、それがシナリオで動作するようにカスタマイズされた:

[browser] --(Host: google.local)--> [apache proxy] --(Host: google.nl)--> Google 

Apacheの設定を次のように

<VirtualHost *:80> 
     ServerName google.local 
    SSLProxyEngine on 
    ProxyRequests Off 
    <Proxy *> 
     Order allow,deny 
     Allow from All 
    </Proxy> 
     ProxyPass/https://www.google.nl/ 
     ProxyPassReverse/https://www.google.nl/ 

     ErrorLog /var/log/apache2/google.local-error.log 
     CustomLog /var/log/apache2/google.local-access.log combined 

</VirtualHost> 
+0

ありがとうございます。それは私の場合、私はGoogleを探して/ googleのように仕事をしなかった。 – user7044932

関連する問題