代理按路径前缀请求虚拟主机

时间:2013-11-29 20:13:29

标签: ruby-on-rails apache torquebox

我在TorqueBox上运行多个Rails应用程序。每个应用程序都安装在不同的Web上下文中,例如localhost:8080/app1localhost:8080/app2(通过TorqueBox配置)。 Apache配置为通过虚拟主机接受对app1.domain.comapp2.domain.com的请求。但是,我遇到了一些问题,其中一些应用程序路径(表单提交路径和其他路径)期望在/app1之前,例如http://app1.domain.com/app1/rest/of/path而不是正确的http://app1.domain.com/rest/of/path

如何配置Apache以使http://app1.domain.com/app1/...的请求进入正确的路径(即没有前导/app1)?我已尝试使用重定向执行此操作,但这不起作用,因为它们强制执行GET请求并且POST数据在此过程中丢失。

这是我目前的Apache配置:

LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
ProxyRequests Off
ProxyPreserveHost On
NameVirtualHost *:80

<VirtualHost *:80>  # There are multiple vhosts like this one, for different apps.
    ServerName app1.domain.com
    ProxyPass / http://127.0.0.1:8080/app1/
    ProxyPassReverse / http://127.0.0.1:8080/app1/
</VirtualHost>

1 个答案:

答案 0 :(得分:2)

我通过在TorqueBox配置中使用Web主机而不是Web上下文解决了这个问题。之后,让Apache配置工作没有问题,因为不同的应用程序不在特定的上下文路径下。

所以,而不是这个(在config/torquebox.rb中):

TorqueBox.configure do
  web do
    context '/app1' 
  end
end

你应该这样做:

TorqueBox.configure do
  web do
    host 'app1.domain.tld'
  end
end
相关问题