我有一个运行在“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”),但它找不到它。
当我不通过代理时......会话属性有效。当我通过代理时,他们没有。我错过了什么?
我在服务器端添加了以下内容:
<Connector port="8080"
proxyName="www.myappurl.com"
proxyPort="80"/>
答案 0 :(得分:2)
这是一个旧的,但由于这个主题出现在第一个谷歌搜索结果中,而我在其他地方几乎找不到答案,这可能会有所帮助:
您只需要添加ProxyPassReverseCookiePath指令,以便在Cookie中更正路径:
ProxyPassReverseCookiePath /appexploded /ordergeek
设置完成后,您应该像往常一样获取会话属性。
请注意,您必须使用Apache 2.2或更高版本。
答案 1 :(得分:0)
当Apache HTTPD在路径中时,很难更改Web应用程序名称。您不仅要使用ProxyPassReverse,还要翻译所有传出的HTML以重写应用程序放置在那里的任何链接。有一个第三方mod_proxy_html模块可以做到这一点,但你应该重新考虑整个策略。恕我直言重写HTML是问题的一部分,而不是解决方案的一部分。只需在Tomcat内部重命名您的Web应用程序。