通过 Cloudflare 代理将 Cookie 从客户端传递到负载均衡器

Passing Cookies from Client to Load Balancer via Cloudflare Proxy

我们有一个负载均衡器,可以将流量分配给几台服务器。

为了保持会话完整性和其他一些位,我们在 LB 上使用了一个策略。基本上,当用户点击 LB 时,他们会收到一个 2 小时内过期的 cookie。此 cookie 告诉负载平衡器用户属于哪个服务器,以阻止他们在访问站点时切换服务器。

这在正常情况下工作正常。

现在介绍Cloudflare CDN。

出于某种原因,cookie 没有进入 LB,但无论如何它都会平衡流量。我假设 Cloudflare 中会有某种规则或设置可以解决这个问题。还有其他人遇到过这个吗?

正在使用的 Cookie 是 jnAccel。它的值是关于用户属于哪个服务器的唯一标识符。它的有效期是 2 小时。

事实证明,阻止 Cookie 的是 CloudFlare 上的 HTTP/2 设置。

您可以在网络菜单中找到它,它应该是列表中的第一个设置。

headers 与 HTTTP/2 打乱并变得不持久。

如果我找到一个解决方案来配置负载平衡器以仍然启用 HTTP/2 我会更新我的答案。