【问题标题】:Can Apache Reverse Proxy exclude certain file types?Apache 反向代理可以排除某些文件类型吗?
【发布时间】:2011-12-14 00:40:21
【问题描述】:

我有一个为 Rails 3.x 提供服务的 Apache/Passenger 组合,并且通过一个反向代理到Passenger Standalone 为 Rails 2.x 提供相同的组合。我这样做的原因是因为 Rails 2.x 使用的 Ruby 版本比 Apache/Passenger 使用的 Ruby 版本旧。

但是,Rails 2.x 应用程序中有一些 php,Passenger Standalone 无法支持。 (乘客讨论组赖洪丽证实)。 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>

【问题讨论】:

    标签: php apache reverse-proxy


    【解决方案1】:

    可以使用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 本地提供。

    希望这能让你朝着正确的方向前进。

    【讨论】:

    • 这就是我喜欢的答案!非常感谢。就我所知,请您解释一下 ProxyPassMatch 之后的字符实际上是做什么的。我猜他们是正则表达式,但我不完全确定。再次感谢。
    • @nexar:apache docs 可能比我解释得更好。
    猜你喜欢
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 2013-08-21
    • 2017-03-08
    • 1970-01-01
    相关资源
    最近更新 更多