繁体   English   中英

如何在使用Apache mod_proxy时保持不同的会话

[英]How to keep different session while using apache mod_proxy

我有一个网站www.example.com,我正在使用apache mod_proxy将另一个子域sub.example.com映射到URL www.example.com/sub,但同时我需要保持不同的会话状态www.example.com和www.example.com/sub。 可能吗? 我正在使用proxypass和proxypassreverese实现这一目标。

    ProxyPass /sub http://sub.example.com
    ProxyPassReverse /sub http://sub.example.com

如果您拥有http://sub.example.com/http://www.example.com/sub则cookie本身不应冲突:Tomcat将发出JSESSIONID cookie,浏览器应将该cookie绑定到主机中。当时使用(www.example.com或sub.example.com)。

上面的配置似乎表明您始终在使用www.example.com并且仅在后台重命名主机。

您可能对此有问题,因为Tomcat将分配一个JSESSIONID cookie,该cookie的Path与Tomcat所见的上下文路径相匹配(即/因为您似乎在Tomcat上使用ROOT Web应用程序),并且客户端将始终看到相同的主机名。 结果将是两个JSESSIONID cookie,如果用户访问了两个“应用程序”并从每个应用程序接收到cookie,则将在每次请求时将其传递给http://www.example.com/ Tomcat将忽略任何与现有会话不匹配的JSESSIONID cookie,然后有多个可供选择,但是如果有多个有效的JSESSIONID cookie,则它可能对环境因素(如标头排序)敏感。

最佳策略是避免使用身份验证和/或Cookie的Web应用程序具有重叠的URL空间。 也许在/sub上部署一个Web应用程序,在/top上部署另一个Web应用程序。 对于根本不使用任何cookie的页面,请使用顶层(例如,除了资源名称之类的路径,如index.html )。

如果您确实想涉足事物,则可以使用Web应用程序的WEB-INF/context.xml文件中的<Context>元素的sessionCookiePath 你可以将其设置为/sub上部署的Web应用程序/sub 这可能会有所帮助,但是您仍然必须拥有一个单独部署的(您的)Web应用程序,以便为www.example.com -deployed应用程序使用不同的cookie路径。 基本上,这一切都变得一团糟,您更值得花时间解开事物来完全避免问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM