max_size
我们有两个 Nginx 服务器,它们各自拥有独立的本地缓存,用于缓存图像。缓存大小会定期出现不受控制的增长问题。这个大小可能比中的大得多nginx.conf
。因此,缓存会占用所有可用磁盘空间。
我想了解这个问题的可能原因。
代理缓存配置(nginx.conf
):
proxy_cache_path /opt2/nginx-cache-images1 max_size=150g levels=2:2 keys_zone=images1:1024m inactive=24h;
proxy_temp_path /opt2/proxy_temp 1 2;
大小/opt2/nginx-cache-images1
约为200GB。
站点位置配置:
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Is-Referer-Search-Engine $is_referer_search_engine;
proxy_hide_header Set-Cookie;
proxy_hide_header Content-Disposition;
proxy_pass http://ua-image-proxy;
default_type image/jpeg;
proxy_cache images1;
proxy_cache_key ua$request_uri$is_referer_search_engine;
proxy_cache_valid 200 24h;
proxy_cache_valid 301 24h;
proxy_cache_valid 404 1h;
}
Nginx 版本:1.7.7 和 1.7.9。它是在 Ubuntu 14.04 上编译的。
答案1
对我来说,这个问题在 nginx 中已经修复1.13.1:
解决方法:现在,缓存管理器根据“max_size”参数清理缓存时会忽略长时间锁定的缓存条目。