У меня есть AWS «Classic Load Balancer», который ретранслирует трафик и для трех экземпляров 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
кто съел мое печенье?