只缓存目标访问者有权共享的响应。公开商品介绍与已登录用户的账户页面有不同要求。
看看泄露如何发生
假设 Alice 请求 /account,Nginx 按该 URL 保存她的响应。如果 Bob 随后收到相同的缓存响应,就会看到 Alice 的数据。问题在于把共享缓存用于私人结果。
从明确公开的路由开始。缓存键是用于标识已保存响应的名称,必须区分主机、路径、查询参数和语言等相关变体。
私人路由要同时控制两个方向
在其他范围已配置代理缓存的 server 内,独立的私人 location 可以这样设置:
nginx
location /account/ {
proxy_pass http://127.0.0.1:3000;
proxy_cache_bypass 1;
proxy_no_cache 1;
}
阻止读取共享缓存响应。 阻止保存新响应。该例子保护 前缀;也要检查其他私人路由,以及可能竞争匹配的 location。
