Session AWS弹性负载平衡粘性会话问题-子域由不同的服务器提供服务?

Session AWS弹性负载平衡粘性会话问题-子域由不同的服务器提供服务?,session,amazon-web-services,load-balancing,subdomain,Session,Amazon Web Services,Load Balancing,Subdomain,我对负载平衡非常陌生,我在让Amazon的弹性负载平衡器更好地处理子域方面遇到了一些问题 我的负载平衡器后面有两台EC2服务器。当我转到mydomain.com和www.mydomain.com时,这两个URL是从不同的EC2服务器提供的。我需要从同一台服务器提供www.mydomain.com和mydomain.com服务,以便会话正常工作 我将负载平衡器粘性设置为LBCookieStickinessPolicy,如下所示: 我的两个EC2实例都在负载平衡器后面使用: 我不知道它对故障排除是否

我对负载平衡非常陌生,我在让Amazon的弹性负载平衡器更好地处理子域方面遇到了一些问题

我的负载平衡器后面有两台EC2服务器。当我转到mydomain.com和www.mydomain.com时,这两个URL是从不同的EC2服务器提供的。我需要从同一台服务器提供www.mydomain.com和mydomain.com服务,以便会话正常工作

我将负载平衡器粘性设置为LBCookieStickinessPolicy,如下所示:

我的两个EC2实例都在负载平衡器后面使用:

我不知道它对故障排除是否有用,但我的apache配置如下所示:

当我在Firebug中查看会话时,我看到以下内容

对于mydomain.com:

对于www.mydomain.com,请注意附加的www.mydomain.com

我不知道为什么,但在查看www.mydomain.com的cookies时,实际上设置了两个AWSELB cookies

我使用的是Zend框架,我将我的cookie\u域设置为:

Zend_Session::start(array('cookie_domain' => '.mydomain.com'));
在将站点移动到两个负载平衡的EC2服务器之前,这在过去工作得很好。我们的站点使用了一些子域,例如api.mydomain.com和my.mydomain.com,这使得cookie\u域变得非常重要。当然,这可能没问题。很有可能,一旦我们让负载平衡器会话在子域之间正常工作,会话变量将按预期工作

当www.被添加到域名中时,你知道为什么我们的网站由不同的服务器提供服务吗


谢谢

管理会话的一种方法是利用共享会话存储。例如,不要使用文件系统存储会话数据(PHP的默认设置),而是设置ElastiCache memcached或DB之类的东西来处理会话数据的存储。这样,您的应用程序就不会关心它在哪台服务器上,它有一个会话数据的中央存储区可供提取


关于这个概念的基础知识,我发现有一篇文章很有趣:

管理会话的一种方法是利用共享会话存储。例如,不要使用文件系统存储会话数据(PHP的默认设置),而是设置ElastiCache memcached或DB之类的东西来处理会话数据的存储。这样,您的应用程序就不会关心它在哪台服务器上,它有一个会话数据的中央存储区可供提取


关于这个概念的基础知识,我发现一篇有趣的文章在这里:

Cookies是按域设置的,包括子域部分。转到时无法读取www.example.com cookie,因此ELB将设置一个新cookie


为了解决这个问题,可以将Apache设置为301,将所有传入的请求重定向到一个规范域。也就是说,要么所有*被重定向到*,要么反之亦然。然后,您只需处理规范域上的Cookie,您的会话粘性将按预期工作。

Cookie按域设置,包括子域部分。转到时无法读取www.example.com cookie,因此ELB将设置一个新cookie


为了解决这个问题,可以将Apache设置为301,将所有传入的请求重定向到一个规范域。也就是说,要么所有*被重定向到*,要么反之亦然。然后,您只需处理规范域上的Cookie,您的会话粘性将按预期工作。

请查看以下链接,然后您就能理解它

请查看以下链接,然后您就可以理解它了

我想说的是,我通过使用应用程序控制的会话粘性来解决我的问题。我仍然很想听到我最初问题的任何答案。我想评论一下,我通过使用应用程序控制的会话粘性来解决我的问题。我仍然很想听到我最初问题的答案。