2011-10-24 2 views
3

나는 Passenger Standalone에 대한 역방향 프록시를 통해 Rails 3.x와 Rails 2.x를 제공하는 Apache/Passenger 콤보를 제공합니다. 제가 이러는 이유는 Rails 2.x가 Apache/Passenger에서 사용하는 Ruby보다 이전 버전의 Ruby를 사용하기 때문입니다.Apache Reverse Proxy가 특정 파일 유형을 제외 할 수 있습니까?

그러나 Passenger Standalone이 지원할 수없는 Rails 2.x 앱에는 약간의 PHP가 있습니다. (Hongli Lai가 승객 토론 그룹에서 확인). Hongli는 Reverse Proxy에서 '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가 실제로 수행 한 이후의 문자를 설명해 주시겠습니까? RegExs라고 추측하고 있지만 완전히 확신 할 수는 없습니다. 다시 한번 감사드립니다. – nexar

+0

@nexar : [apache docs] (http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypassmatch)는 나보다 더 잘 설명 할 수 있습니다. –

관련 문제