我已经用单个 $scheme 测试了 proxy_cache_key
proxy_cache_key $scheme;
proxy_pass http://127.0.0.1:8081/;
然后我请求一个来缓存。
curl http://127.0.0.1:8080/a.html
然后我再次请求确认缓存
curl http://127.0.0.1:8080/a.html
没问题
然后我请求其他网址
curl http://127.0.0.1:8080/b.html
并希望它命中缓存,因为键是 $scheme
但它给了我 b.html 的内容
为什么 proxy_cache_key $scheme;
不工作?
答案1
代理服务器响应的标头可以改变“最终”缓存键。
从https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ignore_headers:
如果没有禁用,处理这些标头字段将产生以下效果:
- “X-Accel-Expires”、“Expires”、“Cache-Control”、“Set-Cookie”和“Vary”设置响应缓存的参数;
您可以检查这些标题是否包含在响应中和/或尝试忽略它们。