我有一个应用程序在 的 tomcat 上运行http://www.example.com:9090/mycontext
。 中的主机名server.xml
指向www.example.com
。我不再有localhost
。我使用 apache 将请求转发到 tomcat,使用mod_proxy
。只要 是 ,一切就都正常ProxyPath
。/mycontext
虚拟主机中设置的服务器名称是www.abc.com
,并且http://www.abc.com/mycontext
工作正常。但是我想忽略上下文路径,只使用http://www.abc.com/
将请求转发到。当我这样做时,apache 显示一个空白页。我这里漏掉了什么?除了将默认主机更改为 之外http://www.example.com:9090/mycontext
,我没有更改 中的任何内容。server.xml
www.example.com
<VirtualHost *:80>
ServerName www.abc.com
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://www.example.com:9090/mycontext
ProxyPassReverse / http://www.example.com:9090/mycontext
</VirtualHost>
谢谢
答案1
在 mod_proxy 中匹配尾部斜杠很重要。
ProxyPass / http://www.example.com:9090/mycontext
这将接受请求http://www.abc.com/something
并将其代理到http://www.example.com:9090/mycontextsomething
- 不是很有帮助!
请尝试以下配置:
ProxyPass / http://www.example.com:9090/mycontext/
ProxyPassReverse / http://www.example.com:9090/mycontext/
另外 - 如果 Tomcat 期望www.example.com
作为主机头,那么您可能不想要该ProxyPreserveHost On
指令。