2011-10-24 13 views
3

私は、Rails 3.xを提供するApache/Passengerコンボと、Passenger Standaloneのリバースプロキシ経由でRails 2.xを提供する同じコンボを持っています。私がこれをやっている理由は、Rails 2.xがApache/Passengerで使用されているRubyより古いバージョンのRubyを使用しているからです。Apache Reverse Proxyは特定のファイルタイプを除外できますか?

しかし、Passenger StandaloneがサポートできないRails 2.xアプリには少しのPHPがあります。 (旅客討論会でHongli Laiによって確認された)。 Hongliは、リバースプロキシから 'php'ビットを除外することを提案しています。

どうすればいいですか?


編集リバースプロキシが設定されている方法を表示する:

<VirtualHost *:80> 
    ServerName gtt 
    DocumentRoot /home/purvez/www/gtt/public 
    RailsEnv development 
    PassengerEnabled off 
    ProxyPass/http://127.0.0.1:3000/ 
    ProxyPassReverse/http://127.0.0.1:3000/ 
</VirtualHost> 

をまた通常のサイトが設定されている方法:

<VirtualHost *:80> 
    ServerName testapp 
    DocumentRoot /home/purvez/www/testapp/public 
    RailsEnv development 
</VirtualHost> 

答えて

7

あなたは除外するProxyPassMatchを使用することができ、

<VirtualHost *:80> 
    ServerName gtt 
    DocumentRoot /home/purvez/www/gtt/public 
    RailsEnv development 
    PassengerEnabled off 
    ProxyPassMatch .*\.php$ ! 
    ProxyPass/http://127.0.0.1:3000/ 
    ProxyPassReverse/http://127.0.0.1:3000/ 
</VirtualHost> 

これにより、gttという名前の仮想ホスト内のすべての「phpビット」が/home/purvez/www/gtt/publicからローカルで提供されることに注意してください。

これはあなたが正しい方向に動くことを望みます。

+0

これは私が好きな答えの種類です!どうもありがとう。私の知る限りでは、ProxyPassMatchが実際に行った後の文字について説明してください。私はそれらがRegExであると推測していますが、私は完全にはわかりません。再度、感謝します。 – nexar

+0

@nexar:[apache docs](http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypassmatch)は、おそらくそれをIよりよく説明できます。 –

関連する問題