proxy_cache_key

指令 `proxy_cache_key` 设置用于缓存代理响应的键。 — NGINX HTTP Core

proxy_cache_key
httpserverlocation
语法proxy_cache_key key_string;
默认值$scheme$request_method$host$request_uri
上下文http, server, location
模块NGINX HTTP Core
参数1

说明

指令 `proxy_cache_key` 定义了 NGINX 如何为存储在代理缓存中的响应构建缓存键。默认情况下,它将协议、主机、URI 和查询字符串组合起来,为每个请求创建唯一的缓存标识符。通过自定义缓存键,可以修改缓存行为,并更精细地控制哪些内容被缓存。该键可以使用变量,从而根据请求参数、头部或其他上下文数据动态生成键。\n\n`proxy_cache_key` 的语法允许你定义一个自定义键字符串,该字符串可以由静态文本和变量组成。例如,你可以包含 `$request_uri`、`$remote_addr` 及其他变量来区分被缓存的内容。这种灵活性允许根据用户会话或其他条件缓存同一响应的多个版本,从而增强 Web 缓存的功能。注意,更改缓存键需要对被缓存内容及用户交互方式有充分理解,以避免不必要的缓存未命中或覆盖。

配置示例

http {
    proxy_cache_path /tmp/cache levels=1:2 keys_zone=my_cache:10m;
    server {
        location / {
            proxy_pass http://backend;
            proxy_cache my_cache;
            proxy_cache_key "$scheme$request_method$host$request_uri";
        }
    }
}

确保生成的自定义 cache key 不会导致过度的 cache fragmentation,因为过于细化的 cache key 会降低 cache hit rates。

如果在你的 cache key 中使用 variables,请注意性能影响,因为不必要的复杂性会为 cache lookups 增加开销。