【问题标题】:How to keep different session while using apache mod_proxy如何在使用 apache mod_proxy 时保持不同的会话
【发布时间】:2013-12-18 07:58:14
【问题描述】:

我有一个网站说 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

【问题讨论】:

    标签: apache tomcat


    【解决方案1】:

    如果您有http://sub.example.com/http://www.example.com/sub,那么cookie 本身不应该冲突:Tomcat 将发出JSESSIONID cookie,并且浏览器应该将该cookie 绑定到当时正在使用的主机(www.example.xml)。 com 或 sub.example.com)。

    您上面的配置似乎表明您总是使用www.example.com 并且只是在后台重新命名主机。

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

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

    如果你真的想插手,你可以看看在你的网络应用程序的WEB-INF/context.xml 文件中使用<Context> 元素的sessionCookiePath。对于部署在 /sub 上的 Web 应用程序,您可以将其设置为 /sub。这可能会有所帮助,但是您仍然必须拥有一个单独部署的(您的)Web 应用程序的副本,以便为 www.example.com-deployed 应用程序提供不同的 cookie 路径。基本上,这一切都变得一团糟,更值得您花时间理清问题以完全避免问题。

    【讨论】:

      猜你喜欢
      • 2014-07-31
      • 2012-09-20
      • 2014-08-27
      • 2011-08-17
      • 2010-10-01
      • 2013-10-15
      • 1970-01-01
      • 2012-06-05
      • 2015-03-09
      相关资源
      最近更新 更多