我有一个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
本地服务。希望这能让你朝着正确的方向前进。