Nginx 中 proxy_cache 怎么配置内存缓存区 proxy_cache_zone
在 nginx 中配置内存缓存区,需要在 http 块中使用 proxy_cache_path 指令定义路径、共享内存名称及大小。该指令通过 keys_zone 参数将磁盘上的缓存文件索引映射到内存中,从而加速缓存查找。配置完成后,在 location 块中通过 proxy_cache 指定该内存区域即可启用缓存功能。

proxy_cache_path 的 keys_zone 参数如何设置
keys_zone 参数用于在共享内存中为缓存键分配空间,格式为 name:size。其中 name 是自定义的内存区域名称,size 是该区域占用的内存字节数。通常建议每 1MB 内存可存储约 8000 至 16000 个缓存键,具体取决于键的长度。如果内存区域过小,会导致缓存命中率下降,因为旧的缓存项会被频繁踢出。

worker_processes 1;
http {
# 定义缓存路径和内存区域
# path=/tmp/nginx_cache: 磁盘缓存存储路径
# keys_zone=my_cache:10m: 内存区域名为 my_cache,大小为 10MB
# max_size=1g: 磁盘缓存最大占用空间
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m;
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
# 启用缓存并指定使用的内存区域
proxy_cache my_cache;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
}
}
}内存缓存区满了之后如何处理
当 keys_zone 指定的内存区域存满时,Nginx 会根据 LRU(最近最少使用)算法淘汰最久未访问的缓存键。这意味着新请求的缓存键会替换掉旧请求的缓存键。需要注意的是,内存区域仅存储缓存键和元数据,实际的文件内容存储在磁盘上。因此,内存区域的容量决定了能同时追踪多少个缓存对象,而不是缓存内容的总大小。

# 验证配置是否正确 nginx -t # 重启 Nginx 使配置生效 systemctl restart nginx


















