Nginx缓存
操作系统:Linux CentOS 7
Nginx版本:1.18
课代表:① 永久缓存配置、② 临时缓存配置、③ 缓存清理配置
永久缓存配置
前提准备
准备两个虚拟机,一台作为Web缓存服务器(192.168.146.24),一台作为内容源服务器(192.168.146.27)
配置 Web缓存服务器
在nginx配置文件中新建虚拟主机 cache.test.conf
1 | cd /usr/local/nginx/conf/vhost |
内容为
1 | server { |
在主配置文件(nginx.conf)中导入虚拟机
1 | include /usr/local/nginx/conf/vhost/cache.test.conf |
在nginx的根目录中,创建保存缓存的文件夹 cache
1 | mkdir cache |
更改对此文件夹的用户权限,要求与Nginx工作进程的用户相同(比如nobody)
1 | chown -R nobody:nobody cache |
重新加载Nginx配置文件
1 | nginx -s reload |
配置内容源服务器
新建虚拟机并且使用 include
指令在主配置文件(nginx.conf)中引入
1 | vim cache.test.conf |
内容为
1 | server { |
创建对应的文件作为此服务器的测试文件。在Nginx根目录的html文件夹中
新建文件夹
1 | mkdir cache.test |
新建测试文件 cache.html
1 | cd cache.test |
内容为
1 | <h1>Welcome to 192.168.146.27</h1> |
在此目录下再创建一个新的目录test
,在test
里面创建创建 test.html,并且放一张图片(nginx.jpg)在此目录
1 | <h1>192.168.146.27/test/test.html</h1> |
访问测试
分别在浏览器访问 192.168.146.24/cache.html 和 192.168.146.24/test/test.html
在刚刚创建的 cache
文件夹中,使用 tree
查看目录内容
这些内容访问是web缓存服务器(192.168.146.24)的内容,就算改掉资源服务器(192.168.146.27)的内容,得到的还是不变的结果
- 如果没有 tree 命令,使用
yum install -y tree
下载就行
临时缓存配置
配置web缓存服务器
在192.168.146.24
的主配置文件的 http
模块中添加
1 | # 代理临时目录 |
- /usr/local/nginx/proxy_cache_dir参数:表示用户自定义的缓存文件保存目录
- levels参数:表示缓存目录下的层级目录结构,它是根据哈希后的请求URL地址创建的,目录名称从哈希后的字符串结尾处开始截取
- 假设哈希后的请求链接地址为“af7098a15e430326197ee01516fdace0”,则levels=1:2表示,第1层子目录的名称是长度为1的字符“0”,第2层子目录的名称是长度为2的字符“ce”。
- keys_zone参数:指定缓存区名称及大小,例如“cache_one:50m”表示缓存区名称为cache_one,在内存中的空间是50M
- inactive参数:表示主动清空在指定时间内未被访问的缓存。例如,“1m”清空在1分钟内未被访问过的缓存,“1h”表示1小时,“1d”表示1天等
- max_size参数:表示指定磁盘空间大小。例如,500m、10g
在server
模块中添加临时缓存的相关配置(可以在之前配置中的虚拟主机中配置)
1 | server { |
在浏览器访问测试结果
访问web缓存服务器(192.168.146.24)
在 nginx 根目录下的 proxy_cache_dir
目录使用 tree 命令
缓存清理配置
前提准备
备份已安装的Nginx
先停掉Nginx,然后复制整个Nginx目录
1 | cp -r /usr/local/nginx /usr/local/nginx_old2 |
重新编译安装Nginx
插件下载地址:https://github.com/FRiCKLE/ngx_cache_purge/releases
下载的内容会是一个zip包,使用uzip
解压之后,移动
1 | mv ngx_cache_purge-master /usr/local/ngx_cache_purge |
去到 Nginx 的根目录
1 | ./configure \ |
- 这里的
\
表示的是当前命令还没有结束,只是换行处理
编译、安装
1 | make && make install |
在配置文件中(虚拟主机)加入
1 | location ~ /purge(/.*){ |
访问测试
先清除之前已经存在的缓存
在nginx根目录中进入proxy_cache_dir
目录,把里面的内容全部删掉,然后重新访问web缓存服务器(192.168.146.24)。查看缓存:
要执行清除缓存操作,现在只需要在浏览器中输入cache.test/purge/index.html
就可以清除缓存啦。