Прилипание AWS ELB приводит к тому, что NGINX работает без кэширования

Мы использовали NGINX в качестве слоя кеша, и недавно при нагрузочном тестировании мы натолкнулись на необычную проблему: при нагрузочном тесте пропадет только кеш всего контента.

Трафик проходит следующим образом:Клиент> NLB > NGINX > ELB (липкость) > Уровень приложений

После небольшого анализа и устранения неполадок, я пришел к выводу, что причиной такого поведения является отсутствие файла cookie AWSELB в запросах, которые отправляет наш инжектор загрузки. Когда cookie не установлен, AWS ELB отправит "set-cookie" со значением для AWSELB, а также включит элемент управления cache: no-cache = "set-cookie".

Поскольку он имеет директиву no-cache, NGINX в конечном итоге не создает ожидаемую запись в кэше, если только этот cookie не отправлен (более поздние запросы после этой точки будут иметь поведение HIT кэша). Я просматривал много ссылок / вопросов и документации, но пока не смог найти решение. Кто-нибудь прошел через это и как вы справились?

Запрос образца:

GET /asset/style.1234567.css HTTP/2
Host: mytestserver
User-Agent: curl/7.54.0
Accept: */*

Пример ответа:

< HTTP/2 200 
< server: nginx
< date: Tue, 04 Dec 2018 16:35:50 GMT
< content-type: text/css; charset=UTF-8
< content-length: 572353
< accept-ranges: bytes
< cache-control: public, max-age=3600
< cache-control: no-cache="set-cookie"
< set-cookie: AWSELB=VERYBIGCOOKIEWITHAWSELBDETAILS;PATH=/;MAX-AGE=60
< x-proxy-cache: MISS

Ближайший пост / статья, которую я видел в своей подписи к проблеме, но она относится к CloudFront и не содержит подробных сведений о том, как она была обработана: https://forums.aws.amazon.com/thread.jspa?messageID=362272

0 ответов

Другие вопросы по тегам