Apache httpd mod_proxy 在 abc.com 等主页上出现 POST 问题

Apache httpd mod_proxy 在 abc.com 等主页上出现 POST 问题

我在 centos 上有 apache server 2.4.18 作为前端的 web 服务器。现在我有多个网站,它们作为 webapps 部署在 tomcat 8.0.33 上,位于 tomcat 的默认 webapps 文件夹中。

apache端配置:

<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>

两个名为 abc.war 和 def.war 的 .war 文件被部署到 tomcat webapps 文件夹中。

abc.com 运行完全正常,因为它只是一个 html 网站。

但 def.com 是一个动态网站,主页上有一个登录表单。成功登录后,主页应加载用户个人资料页面,即:登录页面网址 -> def.com 用户个人资料页面 -> def.com/profile.htm

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

另请注意,如果我将配置更改为:

<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/ 并且我也可以成功登录并打开 def.com/profile.htm 但我希望我的主页在 def.com 上

答案1

最有可能的是,您需要为 def 页面添加一个指令,正如您提到的,有登录页面和可能的 cookie,请检查它们在后端是如何设置的。

我的想法是你可能需要类似的东西:

ProxyPassReverseCookiePath /  /def/

或许是类似的东西ProxyPassReverseCookieDomain

查看mod_proxy 文档如果不是因为你有所有的选择

这是一个有趣的话题,所以如果这不是你的解决方案,我希望你在解决问题后添加你的答案。

相关内容