Nginx缓存自动消失问题求助:配置永久缓存却遭自动清理
问题分析与解决
你的Nginx缓存自动清空的核心原因是**proxy_cache_path未配置inactive参数**,Nginx默认的inactive值为10分钟——意思是如果缓存条目在10分钟内没有被访问,就会被自动清理,这正好匹配你观察到的“停止播放10-15分钟后缓存清空”的现象。
另外,你设置的proxy_cache_valid 200 36500d控制的是缓存条目的新鲜有效期,和缓存条目是否被物理保留是两回事:即使条目还在有效期内,只要超过inactive时间没被访问,依然会被Nginx清理。
具体修改方案
修改你的proxy_cache_path配置,添加inactive=36500d和max_size=0(max_size=0表示不限制缓存总大小,仅受磁盘空间限制):
proxy_cache_path /localcache/nginx levels=2:2:2 keys_zone=cache:128m inactive=36500d max_size=0;
补充说明
inactive=36500d:设置缓存条目即使未被访问,也会保留100年(和你设置的缓存有效期一致,实现“永久保存”的需求)max_size=0:禁用缓存大小自动清理,只有当磁盘空间不足时Nginx才会触发清理(若要严格禁止自动清理,确保磁盘空间充足即可)- 确认
/localcache/nginx目录权限正确,Nginx进程拥有读写权限,避免因权限问题导致缓存文件被意外删除 - 检查系统中是否有定时清理工具(如
tmpwatch、systemd-tmpfiles)会扫描该目录,如有需将/localcache/nginx加入排除列表
修改配置后,执行nginx -s reload重新加载配置即可生效。
内容的提问来源于stack exchange,提问作者tiler
相关产品推荐
相关产品推荐

