应用程序控制的会话粘性:在所有 cookie 上启用粘性?
Application-Controlled Session Stickiness: enable stickiness on all cookies?
我的生产服务器 运行 位于 AWS 上的负载均衡器后面(它们基于 AMI 进行扩展)。一些网站有 cookie - 例如,一家餐厅有多个位置,每个位置都设置在一个 cookie 中。
我注意到 cookie 没有跨多个服务器保存,所以我通过进入 Load Balancers -> Port Configuration
、单击 Enable Application Generated Cookie Stickiness
并插入 cookie 的名称来解决这个问题。
据我所知,这只允许使用一个 cookie 名称,而我有很多 - 例如 Google Analytics。 (也许他们可以用逗号分隔,我还没有检查。)
我的端口配置现在如下所示:
80 (HTTP) forwarding to 80 (HTTP)
Stickiness: AppCookieStickinessPolicy, cookieName='MY_COOKIE'
我想知道是否有任何方法可以识别任何应用程序生成的 cookie,而不必单独命名它们。
非常感谢任何意见。谢谢!
我认为您误解了会话粘性的用途和目的。
如果您没有共享会话存储 - 即 memcached、redis 或池中所有实例都可用的东西,那么您可能正在使用涉及本地存储的会话机制 - 将它们保存在本地文件系统是 php 的常见机制,而 IIS 通常具有本地会话存储。
如果您使用的是本地会话存储,那么您需要确保所有后续请求都返回到存储了会话的节点 - 因为如果没有,那么您的应用程序保存的任何信息在会话中不再可用。
为此,您有两种选择:允许 ELB 设置和管理会话亲和性 cookie,或者让它根据您设置的会话 cookie 执行此操作。请注意,在这两种情况下,ELB 都会创建一个名为 AWSELB 的新 cookie 和一个允许它将请求映射到最初创建它的实例的值 - 但如果您将它绑定到 ELB 仅生成时设置的会话 cookie AWSELB cookie 当它看到一个新的会话 cookie 时。
听起来应用程序问题可能是因为您是从会话中提取位置,而不是从 cookie 中提取位置,但这只是一种猜测。
我的生产服务器 运行 位于 AWS 上的负载均衡器后面(它们基于 AMI 进行扩展)。一些网站有 cookie - 例如,一家餐厅有多个位置,每个位置都设置在一个 cookie 中。
我注意到 cookie 没有跨多个服务器保存,所以我通过进入 Load Balancers -> Port Configuration
、单击 Enable Application Generated Cookie Stickiness
并插入 cookie 的名称来解决这个问题。
据我所知,这只允许使用一个 cookie 名称,而我有很多 - 例如 Google Analytics。 (也许他们可以用逗号分隔,我还没有检查。)
我的端口配置现在如下所示:
80 (HTTP) forwarding to 80 (HTTP)
Stickiness: AppCookieStickinessPolicy, cookieName='MY_COOKIE'
我想知道是否有任何方法可以识别任何应用程序生成的 cookie,而不必单独命名它们。
非常感谢任何意见。谢谢!
我认为您误解了会话粘性的用途和目的。
如果您没有共享会话存储 - 即 memcached、redis 或池中所有实例都可用的东西,那么您可能正在使用涉及本地存储的会话机制 - 将它们保存在本地文件系统是 php 的常见机制,而 IIS 通常具有本地会话存储。
如果您使用的是本地会话存储,那么您需要确保所有后续请求都返回到存储了会话的节点 - 因为如果没有,那么您的应用程序保存的任何信息在会话中不再可用。
为此,您有两种选择:允许 ELB 设置和管理会话亲和性 cookie,或者让它根据您设置的会话 cookie 执行此操作。请注意,在这两种情况下,ELB 都会创建一个名为 AWSELB 的新 cookie 和一个允许它将请求映射到最初创建它的实例的值 - 但如果您将它绑定到 ELB 仅生成时设置的会话 cookie AWSELB cookie 当它看到一个新的会话 cookie 时。
听起来应用程序问题可能是因为您是从会话中提取位置,而不是从 cookie 中提取位置,但这只是一种猜测。