2012-02-23 12 views
2

私は1台のサーバーでサブドメインの束を持っている:Apache - Apacheだけでプロキシサーバーを作ることはできますか?

  • a.example.com
  • b.example.com
  • news.example.com

それらのすべてです同じApache仮想ホスト内にあります。

aとbのサブドメイン内のnewsサブドメインによって提供されるフィードを使用する必要があります。私はAとBのサブドメインで

  • news.example.com/news/a
  • news.example.com/news/b

、:フィードは通常、次のようになりjquery's ajax functionを使用してニュースフィードからデータを読み込み、aとbに表示します。これは当初、same-origin policyのために動作しませんでした。

これを無効にするには、Access-Control-Allow-Origin "*"をApacheの設定ファイルに追加します。

...これはFirefox、Chrome、Safariでのみ動作します。インターネットエクスプローラはその指示を無視しているようだ。

したがって、プロキシを作成する必要があります。

私が必要とするのは、サブドメインが何であってもApacheが検出してnews.example.comにリダイレクトするすべてのサブコーム(たとえば/proxy)の新しいディレクトリです。だから、:

  • a.example.com/proxy/news/a - > news.example.com/news/a
  • b.example.com/proxy/news/bの内容を返します - > news.example.com/news/bの内容を返す

これをApache +サブモジュール(mod_rewriteなど)で直接行うことができますか、これを行うにはPHPなどのスクリプト言語を使用する必要がありますか?

+0

CORSをIE8で動作させるためのドキュメントへのリンクは、[caniuse](http://caniuse.com/#search=cors)を参照してください。 – Quentin

+0

実際にexample.comについて知っていただきありがとうございます。 – Quentin

答えて

1

を我々はの組み合わせを使用してプロキシを作成することができました2つのモジュール:mod_rewriteおよびmod_proxy

rewriteEngine on 
rewriteRule proxy/(.+)$ http://news.example.com/$1 [P] 

最後に[P]は、「プロキシとして動作」とmod_proxyをせずに動作しないルールを語っている:

構文は以下の通りでした。それがなければ、Apacheは "ページを提供する"の代わりに "リダイレクト"(ページの上部にあるURLが変わります)を行います。

2

ProxyPass Directiveが必要です。

ProxyPass /proxy/news/a http://news.example.com/news/a 
+0

ありがとうございました正しいトラック!結局、私はmod_proxyとmod_rewriteを組み合わせなければならなかった - あなたがそこに書いたようにProxyPassを動作させることはできなかった。 – kikito

0

ApacheはApacheを使用するように設定することができます。

は、このワーキングサンプルコード(プロキシ一部)を検討:終わり

<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName ci.testserver.com 
    ServerAlias ci 
    ProxyRequests Off 
    <Proxy *> 
      Order deny,allow 
      Allow from all 
     </Proxy> 
     ProxyPreserveHost on 
     ProxyPass/http://localhost:8080/ 
</VirtualHost> 
関連する問題