Мы использовали 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