反向代理(mod_rewrite)和Rails(绝对path)

例如,我有前端导轨应用程序,该应用程序可以根据URL来反向代理许多后端导轨应用程序

http://www.my_host.com/app_one反向代理到http://www.remote_host_running_app_one.com

这样像http://www.my_host.com/app_one/users这样的URL将显示http://www.my_host.com/app_one/users的内容

我有一个庞大而且不断扩大的后端数量,所以他们不能在数据库以外的任何地方明确列出。 这对使用prg:/ rewrite映射反向代理的mod_rewrite没有任何问题。

问题是,由rails助手返回的url具有/controller/actionforms,使得它们绝对是根。 这是由mod_rewrite提供的页面的问题,因为代理页面上的链接对域显示为绝对的。 即:

http://www.my_host.com/app_one/controller/action有链接,最终看起来像/controller/action/当他们需要看起来像/app_one/controller/action

mod_proxy_html似乎是正确的想法,但它似乎并不像我所需要的那样dynamic,因为规则需要被硬编码到configuration文件中。

有没有办法解决这个服务器端,以便链接将被正确路由?

您可以尝试使用ProxyPass和ProxyPassReverse。

 ProxyPass /app_one http://www.remote_host_runing_app_one.com ProxyPassReverse /app_one http://www.remote_host_running_app_one.com 

虽然你最好在他们命名的目录下运行你的ruby应用程序,并直接反向代理,而不是重写改变uri。

你可以看看独angular兽,乘客或瘦,运行下面的ruby应用程序,以提供更多的灵活性,如何运行。