Nginx设置proxy_cache_valid无效问题
By admin
代码如下
proxy_cache_path /tmp/nginx-cache levels=1:2 keys_zone=nginx-cache:10m max_size=1g inactive=1d use_temp_path=off; location / { root /var/www; proxy_cache_revalidate on; proxy_cache_valid 200 5m; proxy_cache_key $uri; proxy_cache nginx-cache; add_header Nginx-Cache "$upstream_cache_status"; }
按nginx配置文档,proxy_cache_valid应该会定期更新缓存。
但实际情况下,该项从没起作用,上游proxy更新后缓存也绝不会更新。
最后想到了上游http头的缓存设置问题。查看了一下发现上游果然通过Cache-Control与Expires,设置了一个超长的客户端缓存时间。
通过proxy_ignore_headers指令忽略上游指定的客户端缓存头,才能让proxy_cache_valid真正起作用。代码如下:
proxy_ignore_headers Cache-Control Expires;