Прилипание AWS ELB приводит к тому, что NGINX работает без кэширования - PullRequest
0 голосов
/ 05 декабря 2018

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

Трафик течет какэто: Клиент> NLB> NGINX> ELB (липкость)> Уровень приложений

После небольшого анализа и устранения неполадок, я пришел к выводу, что причина такого поведения заключается вотсутствие cookie-файла «AWSELB» в запросах, которые отправляет наш инжектор загрузки.Если cookie не установлен, AWS ELB будет отправлять «set-cookie» со значением для AWSELB, а также будет включать cache-control: 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

...