我有一个apache/passenger组合服务于rails 3.x,相同的组合服务于rails 2.x,通过一个反向代理服务于passenger standalone。我之所以这么做是因为rails 2.x使用的ruby版本比apache/passenger使用的ruby版本旧。
不过,rails 2.x应用程序中有一点php,passenger standalone无法支持。(经黎鸿利在旅客座谈会上证实)。宏利建议从反向代理中排除“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>

最佳答案

您可以使用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本地服务。
希望这能让你朝着正确的方向前进。

09-03 21:12