Eu tenho um "Balanceador de carga clássico" da AWS que transmite o tráfego e para três instâncias do EC2. Nessas instâncias do EC2 (são máquinas Linux simples), tenho um GlassFish 4.1 em execução e escutando a porta 80.
Ao chamar a URL para um único servidor, tudo está bem (funciona como deveria), mas quando o tráfego é retransmitido pelo Balanceador de Carga, a solicitação para o servidor de aplicativos não tem cookies.
Eu verifiquei a opção "Ativar aplicação de cookie gerada pelo balanceador de carga " e também tentei "Ativar a viscosidade de cookie gerada pelo aplicativo" . Ambas as vezes em que o balanceador escolhe um servidor de destino para a primeira solicitação e usa retransmite todas as solicitações subsequentes para o mesmo servidor, mas omite os cookies.
Por exemplo
Após o login eu tenho esses cookies:
AWSELB DD17B9....
JSESSIONID 8f22ce....
mnzkks 1869:1000:34....
Quando clico em qualquer link na página, vejo que meu navegador inclui os novos cookies na solicitação:
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..
Em um filtro do meu aplicativo, imprimo todos os nomes dos cookies e verifico os "mnzkks". Se eu não encontrar nenhum cookie, ele imprime no cookie
:)
Ao usar o URL original do servidor, ele imprime
AWSELB
JSESSIONID
mnzkks
Ao usar o URL do balanceador, ele sempre imprime no cookie
, mesmo que o navegador inclua todos os três cookies da solicitação
quem comeu meus cookies?