我使用一个 Apache HTTPD 和多个 Tomcat 作为负载平衡解决方案。会话粘性基于JSESSIONID
cookie。我有两个问题真的需要你的帮助。
1)Tomcat版本为7,cookies可以与子域共享。域如下所示:
- en.mydomain.com
- es.mydomain.com
- it.mydomain.com
配置在context.xml
<Context sessionCookieDomain=".mydomain.com" sessionCookiePath="/">
同时,我们有分子域的暂存环境,cookies也可以跨以下域共享:
- en.alpha.mydomain.com
- es.alpha.mydomain.com
- it.alpha.mydomain.com
配置在context.xml
:
<Context sessionCookieDomain=".alpha.mydomain.com" sessionCookiePath="/">
但有时,JSESSIONID
cookie 可以在en.mydomain.com
和之间共享en.alpha.mydomain.com
,这是意料之中的。
如何解决这个问题?Cookie 不应在不同级别的子域中共享。
2)我尝试刷新JSESSIONID
上述问题的cookie,但失败了。在 Tomcat JSP 中:
session.invalidate();
session = request.getSession(true);
out.print(session.getId());
JSESSIONID
cookie 在直接访问此 Tomcat JSP 时会刷新,但在访问其代理 Apache 时保持不变。我应该修改mod_proxy
等以通过访问 Apache URL 来支持JSESSIONID
cookie 刷新吗?