Назад | Перейти на главную страницу

AWS Load Balancer не пересылает файлы cookie

У меня есть 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

кто съел мое печенье?