1

我有一个在“http://localhost:8080/appexploded/login.jsp”(Tomcat)上运行的 tomcat 应用程序。现在我已经安装了 Apache 并且正在运行 mod_proxy,以便端口 80 上的所有请求都可以代理到 8080。在我的 httpd.conf 文件中,这是我所拥有的:

LoadModule proxy_module  /usr/lib/apache2/modules/mod_proxy.so

ProxyPass         /ordergeek  http://localhost:8080/appexploded
ProxyPassReverse  /ordergeek  http://localhost:8080/appexploded 

因此,当我直接向 :8080 发出请求时,我的 request.getSession().getAttribute("BLAH") 从一页到另一页工作。但是,当我转到“http://localhost/ordergeek/login.jsp”时,该页面设置了一个会话属性,然后重定向到另一个页面。但是,下一页尝试读取 request.getSession().getAttribute("BLAH"),但没有找到。

当我不通过代理时……会话属性起作用。当我通过代理时,他们没有。我错过了什么?

我在 server.xml 中添加了以下内容:

<Connector port="8080" 
          proxyName="www.myappurl.com"
          proxyPort="80"/>
4

2 回答 2

2

这是一个旧的,但由于这个线程出现在第一个谷歌搜索结果中,而且我在其他地方几乎找不到答案,它可能会有所帮助:

您只需添加一个 ProxyPassReverseCookiePath 指令即可在 cookie 中更正路径:

ProxyPassReverseCookiePath /appexploded /ordergeek  

设置完成后,您应该像往常一样获取会话属性。

请注意,您必须使用 Apache 2.2 或更高版本。

于 2012-11-27T17:41:28.700 回答
0

当 Apache HTTPD 在路径中时,很难更改 Web 应用程序名称。您不仅要使用 ProxyPassReverse,还要翻译所有传出的 HTML 以重写应用程序放置在那里的任何链接。有一个 3rd 方 mod_proxy_html 模块可以做到这一点,但你真的应该重新考虑整个策略。恕我直言,重写 HTML 是问题的一部分,而不是解决方案的一部分。只需在 Tomcat 内部重命名您的 Web 应用程序。

于 2012-06-17T22:23:18.857 回答