如何利用proxy_cache_key变量实现按业务维度细分的高效缓存隔离策略?
- 内容介绍
- 文章标签
- 相关推荐
本文共计746个文字,预计阅读时间需要3分钟。
为了让+Nginx+的配置更高效,以下是一个简化的配置开头内容:
按域名隔离:避免多站点缓存互相污染
多个域名共用一个缓存区时,/about 在 example.com 和 test.com 下本应是两份内容。只靠 proxy_cache_path 分开还不够,必须在 key 里显式带上 $host:
- 在
http块中定义独立缓存区:proxy_cache_path /var/cache/nginx/site_a ... keys_zone=site_a:10m;proxy_cache_path /var/cache/nginx/site_b ... keys_zone=site_b:10m; - 在对应
server块中绑定并构造 key:proxy_cache site_a;proxy_cache_key "$host$request_uri$is_args$args";
这样 example.com/about 和 test.com/about 的哈希值完全不同,物理上也写入不同目录,彻底断开干扰。
按终端类型区分:PC 与移动端不共用缓存
Next.js 或 SSR 应用常根据 User-Agent 返回不同 HTML。若缓存 key 不含终端标识,手机用户可能拿到 PC 版页面。
本文共计746个文字,预计阅读时间需要3分钟。
为了让+Nginx+的配置更高效,以下是一个简化的配置开头内容:
按域名隔离:避免多站点缓存互相污染
多个域名共用一个缓存区时,/about 在 example.com 和 test.com 下本应是两份内容。只靠 proxy_cache_path 分开还不够,必须在 key 里显式带上 $host:
- 在
http块中定义独立缓存区:proxy_cache_path /var/cache/nginx/site_a ... keys_zone=site_a:10m;proxy_cache_path /var/cache/nginx/site_b ... keys_zone=site_b:10m; - 在对应
server块中绑定并构造 key:proxy_cache site_a;proxy_cache_key "$host$request_uri$is_args$args";
这样 example.com/about 和 test.com/about 的哈希值完全不同,物理上也写入不同目录,彻底断开干扰。
按终端类型区分:PC 与移动端不共用缓存
Next.js 或 SSR 应用常根据 User-Agent 返回不同 HTML。若缓存 key 不含终端标识,手机用户可能拿到 PC 版页面。

