Py学习  »  NGINX

AWS ELB粘性导致NGINX没有缓存行为

bayetovsky • 4 年前 • 145 次点击  

我们一直在使用NGINX作为缓存层,最近在对其进行负载测试时,我们偶然发现了一个不寻常的问题:负载测试只会在所有内容上获得缓存未命中。

交通流是这样的: 客户端>NLB>NGINX>ELB(粘性)>应用程序层

经过一些分析和故障排除,我得出结论,导致这种行为的原因是在我们的负载注入器发送的请求中缺少“awselb”粘性cookie。 未设置cookie时,AWS ELB将发送带有AWSELB值的“set cookie”,还将包含 cache control:no cache=“设置cookie” .

由于NGINX有一个“no cache”指令,因此除非发送cookie,否则NGINX最终不会创建预期的缓存条目(此后的请求将具有缓存命中行为)。 我浏览了很多链接/问题和文档,但是到目前为止我还没有找到解决方案。 有人经历过吗?你是怎么处理的?

样本请求:

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/48550
 
145 次点击