十六、缓存及缓存清理

1、修改node1配置文件nginx.conf

(1)http配置段中增加如下代码:

proxy_cache_path /usr/local/tengine/cache levels=1:1:2 keys_zone=mycache:200m inactive=15d max_size=100g;

备注:

Ø  levels=1:1:2表示1个字符的一级缓存目录和二级缓存目录,2个字符的三级缓存目录

Ø  keys_zone=mycache:200m表示缓存名称为mycache,内存缓存空间大小为200m

Ø  inactive=15d表示15天内没有被访问的内容会被自动清除

(2)在指定location配置段中增加如下代码:

server {

listen 80;

server_name node1.qiuyue.com;

       location / {

root html;

index index.html index.html;

       }

 

       location /bbs {

proxy_pass http://192.168.1.144/bbs;

index index.html index.html;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_cache mycache;

proxy_cache_key $host$uri$is_args$args;

# 将域名、URI、参数组合成缓存的Key值,再根据Key值哈希,存储缓存内容到缓存目录中

proxy_cache_valid 200 302 10m;

proxy_cache_valid 301 1h;

proxy_cache_valid any 1m;

proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;

add_header X-Cache $upstream_cache_status;

       }

}

备注:本地已有资源无需缓存,建议缓存后端服务器的资源


2、创建用于存储缓存的目录:# mkdir -pv /usr/local/tengine/cache


3、设置存储缓存目录的权限:# chown -R tengine:tengine /usr/local/tengine/cache


4、重载服务:# nginx -t  # nginx -s reload

CentOS 7.4 Tengine安装配置详解(七)_cache


5、默认存储缓存的目录为空:# ls /usr/local/tengine/cache

CentOS 7.4 Tengine安装配置详解(七)_cache_02


6、本地Windows 10首次访问http://node1.qiuyue.com/bbs(按F12进入调试模式),并查看缓存目录中的内容:

CentOS 7.4 Tengine安装配置详解(七)_tengine_03

CentOS 7.4 Tengine安装配置详解(七)_cache_04


7、刷新页面,即本地Windows 10第二次访问http://node1.qiuyue.com/bbs

CentOS 7.4 Tengine安装配置详解(七)_purge_05

备注:缓存已经命中


8、修改node2测试页内容:# echo "<h3>bbs on node2 new</h3>" > /var/www/html/bbs/index.html


9、刷新页面,依旧是缓存中的内容:

CentOS 7.4 Tengine安装配置详解(七)_tengine_06


10、清理缓存:

(1)动态加载ngx_cache_purge模块:

# cd /tmp

# wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz

# tar -xf ngx_cache_purge-2.3.tar.gz

# dso_tool --add-module=/tmp/ngx_cache_purge-2.3

# vim nginx.conf

dso {

load ngx_cache_purge_module.so;

}

(2)编辑location:            

location ~ /purge(/.*) {

       allow 192.168.1.0/24;

       deny all;

       proxy_cache_purge mycache $host$1$is_args$args;

       access_log off;

}

# nginx -t  # nginx -s reload  # nginx -m

(3)清理缓存

如果要清理http://node1.qiuyue.com/bbs/index.html的缓存,则访问http://node1.qiuyue.com/purge/bbs/index.html即可,会出现Successful purge的提示

备注:可以直接删除/usr/local/tengine/cache目录中的所有内容来达到清理缓存的目的,但是不建议这样操作。