amazon-web-services - 应用程序控制的 session 粘性: enable stickiness on all cookies?

标签 amazon-web-services cookies configuration server load-balancing

我的生产服务器在 AWS 上的负载均衡器后面运行(它们基于 AMI 进行扩展)。有些网站有 cookie - 例如,一家有多个地点的餐厅,每个地点都设置在 cookie 中。

我注意到 cookie 没有跨多个服务器保存,因此我通过进入负载均衡器 -> 端口配置,单击启用应用程序生成的 Cookie 粘性来解决此问题>,并插入 cookie 的名称。

据我所知,这只允许一个 cookie 名称,而我有很多 - 例如 Google Analytics。 (也许它们可以用逗号分隔,我还没有检查过。)

我的端口配置现在如下所示:

80 (HTTP) forwarding to 80 (HTTP)
Stickiness: AppCookieStickinessPolicy, cookieName='MY_COOKIE'

我想知道是否有任何方法可以允许识别任何应用程序生成的 cookie,而不必单独命名它们。

非常感谢任何意见。谢谢!

最佳答案

我认为您误解了 session 粘性的用途和目的。

如果您没有共享 session 存储 - 即 memcached、redis 或可供池中所有实例使用的东西,那么您可能正在使用涉及本地存储的 session 机制 - 将它们保存在本地文件系统是php的常用机制,而IIS通常会有一个本地 session 存储。

如果您使用本地 session 存储,那么您需要确保所有后续请求都返回到存储 session 的节点 - 因为如果没有,那么您的应用程序在 session 中保存的任何信息不再被提供。

为此,您有两种选择:允许 ELB 设置和管理 session 亲和性 Cookie,或者让它根据您设置的 session Cookie 来执行此操作。请注意,在这两种情况下,ELB 都会创建一个名为 AWSELB 的新 cookie 和一个值,该值允许它将请求映射到最初创建它的实例 - 但如果您将其绑定(bind)到 ELB 仅生成时设置的 session cookie当 AWSELB 看到新的 session cookie 时,它​​会返回 cookie。

听起来应用程序问题可能是因为您从 session 中提取位置,而不是从 cookie 中提取位置,但这只是猜测。

关于amazon-web-services - 应用程序控制的 session 粘性: enable stickiness on all cookies?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34231439/

相关文章:

amazon-web-services - 使用 localstack 运行 lambda 函数

python - 在aws中获取表的列名作为元组而不是字符串

java - Android HttpClient 和 Cookie

javascript - jQuery 设置 cookie 到 post 方法

java - spring security 3.0.3配置错误

c# - 简单 C# 应用程序的配置方法(事件日志记录)

amazon-web-services - AWS Redshift 脚本导出

amazon-web-services - terraform 资源模块中的两个 for_each

javascript - 当我用 jquery 添加新的 div 时,试图让这些 div 不重置位置

configuration - Akka .conf 调度程序配置是否有效?