keys_zone是启用nginx proxy_cache的前提,它在http块中定义共享内存区,专存缓存key和元数据以实现微秒级命中判断;必须与proxy_cache指令名称严格一致,大小需按业务key量合理预估。

设置 keys_zone 是启用 Nginx proxy_cache 的前提,它定义了一块共享内存区域,专门存放缓存 key 和元数据(如过期时间、访问次数等),让所有 worker 进程能快速判断请求是否命中缓存——不查磁盘,只读内存。
必须在 http 块中定义 proxy_cache_path 并指定 keys_zone
该指令只能出现在 http{} 上下文中,不能放在 server 或 location 里。例如:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=api_cache:20m max_size=2g inactive=60m use_temp_path=off;
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
-
keys_zone=api_cache:20m:定义名为
api_cache的共享内存区,大小为 20MB - 名称
api_cache后续必须与proxy_cache api_cache完全一致,否则缓存完全不生效 - 20MB 约可存储 16 万~24 万个 key(按每 MB 存 8000–12000 个 key 估算,取决于 key 长度)
确保 location 中正确引用 keys_zone 名称
在需要缓存的 location 块中,用 proxy_cache 指令绑定刚才定义的 zone 名:
location /api/ {
proxy_pass http://backend;
proxy_cache api_cache;
proxy_cache_key "$scheme$host$request_uri$args";
proxy_cache_valid 200 302 10m;
}
-
proxy_cache api_cache必须与keys_zone=api_cache:20m中的名字严格匹配(区分大小写) -
proxy_cache_key建议显式定义,避免默认值导致不同参数请求被错误合并 - 若同时用多个缓存区(如按端口或域名隔离),每个需独立
proxy_cache_path+ 独立keys_zone名
大小配置要兼顾容量和冲突率
共享内存太小会频繁淘汰条目、升高哈希冲突;太大则浪费资源,还可能拖慢 cache loader 加载速度。
- 预估 10 万个唯一客户端或缓存 key → 建议至少
keys_zone=xxx:12m - 常规 API 缓存(数万 key)可用
:10m~20m;高并发多租户场景建议:30m~50m - 可通过
nginx -V 2>&1 | grep -o 'configure arguments.*'查看编译选项,确认是否启用影响内存布局的模块(如--with-http_ssl_module)










