为Nginx添加cache purge模块

banner-1544x500

Nginx有着强大的反代功能,并且在反代时支持缓存(proxy_cache配置项)。不过,默认nginx不支持手动清除缓存功能,而只能等待缓存过期。这经常无法满足我们的需求。好在nginx有一个ngx_cache_purge模块,正好解决了这一需要。

重编译nginx,加入ngx_cache_purge模块

1.克隆ngx_cache_purge

cd /usr/local/src
git clone https://github.com/FRiCKLE/ngx_cache_purge

如果没有git,先运行 apt-get install git

2.重编译nginx

cd <你的nginx源码目录>
nginx -V
./configure <nginx -V显示的配置参数> --add_module=/usr/local/src/ngx_cache_purge
make -j`$(nproc)`
service nginx stop
cp objs/nginx <你的nginx安装目录>/sbin
service nginx start

模块相关配置

在配置反代缓存时,首先用如下的一条指令来设定缓存区:(这条指令放在server段上方)

proxy_cache_path /var/run/cache levels=1:2 keys_zone=STATIC:75m inactive=24h max_size=512m;

这条指令中,ngx_cache_purge模块需要的是keys_zone参数。

检查在location段中是否有设置cache key,如果没有,先添加:

proxy_cache_key    $uri$is_args$args;

然后在server段中加入:

location ~ /purge(/.*) {
allow 127.0.0.1;
deny all;
proxy_cache_purge tmpcache $1$is_args$args; #记得换成你自己的key
}

这段配置让你可以访问 路径/purge 这样的URL来清除对应页面的缓存。

  • allow:指定允许访问该地址的IP,建议在服务器上搭建一个代理,然后将allow设置为服务器的IP,需要清理缓存时挂上这个代理访问。
  • proxy_cache_purge有两个参数,第一个是上文中提到的keys_zone,第二个是cache key的格式。
    配置完成后,重启nginx服务就可以使用cache purge模块了。

欢迎各位交流讨论,如有纰漏,欢迎留言指出。

PS:图片来自网络,侵删

参考

ngx_cache_purge