Nginx 学习笔记(三)proxy_cache 缓存配置和ngx_cache_purge模块

反向代理的缓存清理

一、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缓存终极设置

posted @ 2017-11-20 09:35  Tinywan  阅读(5647)  评论(0编辑  收藏  举报