使用 ProxyHTMLURLMap 时丢失 JSESSIONID

使用 ProxyHTMLURLMap 时丢失 JSESSIONID

我在 Apache 前端和多个 Tomcat 后端之间设置了一个反向代理。下面的代码块包含 ProxyHTMLURLMap 参数,因此可以重写 HTML 以删除 Tomcat 上下文路径。使用此设置后,登录我的应用程序后,初始 JSESSIONID 已正确设置,但当导航到任何其他页面时,此 JSESSIONID 会丢失,应用程序会设置另一个。

我应该提到,初始登录会指向包含当前上下文路径的 URL(即https://app.domain.com/context/home),但当导航到另一个页面时,该上下文路径并不存在于 URL 中(即https://app.domain.com/page2)。

<Proxy balancer://happcluster>
BalancerMember ajp://happ01.h.s.com:8009 route=worker1 loadfactor=10 timeout=15 retry=5
BalancerMember ajp://happ02.h.s.com:8009 route=worker2 loadfactor=10 timeout=15 retry=5
BalancerMember ajp://happ03.h.s.com:8009 route=worker3 loadfactor=5 timeout=15 retry=5
BalancerMember ajp://happ04.h.s.com:8009 route=worker4 loadfactor=5 timeout=15 retry=5
BalancerMember ajp://happ05.h.s.com:8009 route=worker5 loadfactor=5 timeout=15 retry=5
ProxySet lbmethod=bytraffic
ProxySet stickysession=JSESSIONID
</Proxy>

ProxyPass       /context   balancer://happcluster/context
ProxyPass       /       balancer://happcluster/context/

<Location /context/>
# Rewrite HTTP headers and HTML/CSS links for everything else
ProxyPassReverse /
ProxyPassReverseCookieDomain / app.domain.com
ProxyPassReverseCookiePath / /context
ProxyHTMLURLMap /context/ /
# Be prepared to rewrite the HTML/CSS files as they come back
# from Tomcat
SetOutputFilter INFLATE;proxy-html;DEFLATE
</Location>

有人遇到过类似的情况吗?

答案1

所以我弄清楚了问题所在。我必须反转以下参数

ProxyPassReverseCookiePath /context /

现在我没有丢失 JSESSIONID。

相关内容