我在TorqueBox上运行多个Rails应用程序。每个应用程序都安装在不同的Web上下文中,例如localhost:8080/app1
和localhost:8080/app2
(通过TorqueBox配置)。 Apache配置为通过虚拟主机接受对app1.domain.com
和app2.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>
答案 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