白皮书

今天晚上按照惯例,宅家研究了一下nginx软件,在新建立好反向代理站点后,nginx死活无法通过浏览器URL访问的方式,来清理服务器上的反向代理缓存。
站点配置文件中,清除代理缓存的规则如下
location ~ /purge(/.*) {
proxy_cache_purge cache_one $host$1$is_args$args;
}
访问 https://b.inetpub.cn/purge/admin.css 出现了css的源代码,而不是 successful purge 的页面。
后来我在想,会不会是nginx软件在编译安装时,没有启用 purge 模块。紧接着我打开了终端,输入命令 nginx -V 2>&1 | grep ngx_cache_purge。结果是已经包含ngx_cache_purge模块了。好的,那我们跳过这一步骤。
第二步,我又检查了一遍站点配置文件中,并没有优先于清除代理缓存的规则的 location 代码部分。真是奇了怪了。
第三步,我打开了nginx的全局配置参数,其中包含了 proxy.conf 的一个配置引用,其中 proxy_cache 指令使用的缓存区名称。比如:cache_one,也和站点配置中的名字一致,这样,我来到了第四步。
检查站点配置中 location 模块的拼写部分,发现了端倪。
第一,我们得确保 purge location 在静态文件规则之前。第二:验证 location 优先级:注意 ^~、=、~、~*、普通前缀的匹配顺序。
正确的书写方法应该为:
location ^~ /purge {
rewrite ^/purge/(.*) /$1 break;
proxy_cache_purge cache_one "$host$uri$is_args$args";
}
至此,久违的成功 Successful purge 页面,成功出现。
提示: 此篇文章博主已关闭评论。
评论列表: 表情