反向代理的缓存清理
一、proxy_cache配置
(1)如何配置和安装,都在这里了:https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Nginx/Nginx-Web/Nginx-8-proxy_cache.md
(2)被代理域名:http://www.amailive.com/
(3)测试域名:amailive.tinywan.com
(4)Server主机配置
server { listen 80; server_name redis.tinywan.com; location / { proxy_cache cache_one; proxy_cache_valid 200 304 1h; proxy_cache_valid 404 1m; proxy_cache_key $host$uri$is_args$args; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; add_header Nginx-Cache "$upstream_cache_status"; proxy_ignore_headers X-Accel-Expires Expires Cache-Control Set-Cookie; proxy_pass http://www.redis.net.cn/; expires 1d; } }
(5)重启服务器,测试配置是否成功
【1】第一次尝试,没有缓存
proxy_cache模块的工作原理如图所示
【2】第二次再次访问,可以看出已经是命中缓存了
proxy_cache模块的工作原理如图所示
【3】查看缓存目录结构
【4】详细的缓存文件
【5】所有的静态文件都被缓存
二、ngx_cache_purge配置
1、模块下载地址 :https://github.com/FRiCKLE/ngx_cache_purge
2、编译安装。在我另外一篇博客:http://www.cnblogs.com/tinywan/p/7860774.html
注:这个模块不可以动态编译,我第一次动态编译后,结果没有编译进去,没有.so文件生成
3、配置文件
location ~ /purge(/.*) { allow all; #127.0.0.1; 只允许本机访问 deny all; #禁止其他所有ip proxy_cache_purge cache_one $host$1$is_args$args; #清理缓存 access_log logs/cache.log cache; # 增加清理输出日志 }
注:Cache_proxy Purge,这个url中,必须以波浪号开头,不要加"^"
4、测试
【1】查看一个缓存文件路径,这个路径就是缓存文件的真实路径了
【2】清理缓存,在浏览器地址栏输入:http://amailive.tinywan.com/purge/lib/swiper/3.0.6/js/maps/swiper.jquery.min.js.map
【3】再次查看该缓存文件,可以看出已经被清理掉,不存在了
【4】再次访问原来的url,缓存就会失效了。
三、参考文献
1、nginx系列(二十)nginx的缓存清理模块ngx_cache_purge
2、linux + nginx + ngx_cache_purge 缓存清理
3、动态PHP电商网站伪静态的 Nginx反向代理Cache缓存终极设置