Apache httpd mod_proxy主页上的POST问题,如abc.com

我在前端有一个作为Web服务器的CentOS上的apache服务器2.4.18。 现在我有多个网站在tomcat 8.0.33上作为webapps在tomcat的默认webapps文件夹中部署。

在apache结尾的configuration:

<VirtualHost 1.2.3.4:80> ServerName abc.com ServerAlias www.abc.com ProxyPass / http://localhost:8079/abc/ ProxyPassReverse / http://localhost:8079/abc/ </VirtualHost> <VirtualHost 1.2.3.4:80> ServerName def.com ServerAlias www.def.com ProxyPass / http://localhost:8079/def/ ProxyPassReverse / http://localhost:8079/def/ </VirtualHost> 

两个.war文件的名字,abc.war&def.war被部署到tomcat的webapps文件夹中。

abc.com工作绝对好,因为它只是一个HTML网站。

但def.com是一个dynamic的网站,它在主页上有一个login表单。 login成功后的主页应该加载用户个人资料页面:login页面url – > def.com用户个人资料页面 – > def.com/profile.htm

请注意,主页加载成功(意味着GET成功执行)在浏览器,但当用户试图login(这是一个POST请求),它以某种方式尝试加载:def.com/def/profile.htm

另外请注意,如果我将configuration更改为:

 <VirtualHost 1.2.3.4:80> ServerName def.com ServerAlias www.def.com ProxyPass /def/ http://localhost:8079/def/ ProxyPassReverse /def/ http://localhost:8079/def/ </VirtualHost> 

那么我可以成功地打开def.com/def/&我也可以成功地login和打开def.com/profile.htm,但我希望我的主页在def.com上

大多数情况下,您需要为def页面添加一个指令,正如您所提到的,有login页面,可能是cookies,请检查它们是如何设置在后端的。

我的想法是你可能需要像这样的东西:

 ProxyPassReverseCookiePath / /def/ 

也许可能与ProxyPassReverseCookieDomain类似。

如果不是所有的选项,请查看mod_proxy文档

这是一个有趣的话题,所以如果这不是你的解决scheme,我将不胜感激,如果你添加你的答案,一旦你要解决它。