AWS 负载均衡器不转发 Cookie

AWS 负载均衡器不转发 Cookie

我有一个 AWS“经典负载均衡器”,用于中继流量和 3 个 EC2 实例。在这些 EC2 实例(简单的 Linux 机器)上,我有一个 GlassFish 4.1 正在运行并监听端口 80。

调用单个服务器的 URL 时,一切正常(按预期工作),但是当流量由负载均衡器中继时,对应用程序服务器的请求没有 cookie。

我检查了平衡器的“启用负载均衡器生成的 Cookie 粘性”选择并尝试过“启用应用程序生成的 Cookie 粘性”。两次平衡器都为第一个请求选择一个目标服务器,并将所有后续请求中继到同一服务器 - 但省略了 cookie。

例如
登录后我有以下 cookie:

AWSELB      DD17B9....
JSESSIONID  8f22ce....
mnzkks      1869:1000:34....

当我点击页面上的任何链接时,我会看到我的浏览器在请求中包含了新的 cookie:

GET /mypage/detail HTTP/1.1
Host: my.page.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 OPR/45.0.2552.888
Referer: https://my.page.com/dashboard
Cookie: JSESSIONID=8f22ce ...;
        AWSELB= DD17B9....; 
        mnzkks=1869:1000:345..

在我的应用程序的过滤器中,我打印出所有 cookie 名称并检查“mnzkks”。如果我找不到任何 cookie,它就会打印出来no cookie:)

当使用服务器的原始 URL 时,它会打印

AWSELB
JSESSIONID
mnzkks

当使用平衡器的 URL 时,它总是会打印no cookie,即使浏览器在请求中包含了所有 3 个 cookie

谁吃了我的饼干?

相关内容