我正在TorqueBox上运行多个Rails应用程序。 每个应用程序都安装在不同的Web上下文中,例如localhost:8080/app1
和localhost:8080/app2
(通过TorqueBoxconfiguration)。 Apacheconfiguration为通过虚拟主机接受对app1.domain.com
和app2.domain.com
请求。 但是,我遇到了一些问题,其中一些应用程序path(表单提交path和其他)预期会被/app1
,例如http://app1.domain.com/app1/rest/of/path
而不是正确的http://app1.domain.com/rest/of/path
。
我如何configurationApache,以便对http://app1.domain.com/app1/...
的请求到正确的path(即没有领先的/app1
)? 我试过这样做的redirect,但这是行不通的,因为他们强制GET请求和POST数据在过程中丢失。
这是我目前的Apacheconfiguration:
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>
我通过在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