Nginx作为Web缓存服务器,它介于客户端和应用服务器之间,当用户通过浏览器访问一个URL时,web缓存服务器会去应用服务器获取要展示给用户的内容,将内容缓存到自己的服务器上,当下一次请求到来时,如果访问的是同一个URL,web缓存服务器就会直接将之前缓存的内容返回给客户端,而不是向应用服务器再次发送请求。web缓存降低了应用服务器、数据库的负载,减少了网络延迟,提高了用户访问的响应速度,增强了用户的体验。
测试环境:
NGINX版本及编译的模块:
清除缓存模块版本:ngx_cache_purge-2.3
1.下载解压ngx_cache_purge模块
1 | [root@a ~]#cd /root |
2.创建NGINX所需依赖:
1 | [root@a ~]yum install gcc gcc-c++ pcre pcre-devel openssl openssl-devel zlib zlib-devel |
编译安装NGINX:
1 | [root@a ~]#cd nginx-1.14.2 |
3.创建一个用于缓存的目录:
1 | [root@a nginx-1.14.2]#mkdir /usr/local/nginx/proxy_cache_path |
4.创建一个主页文件充当后端服务器默认主页:
1 | [root@a nginx]#mkdir /usr/local/nginx/htmltest |
5.配置nginx缓存(为了简单明了,配置文件里我只留了和缓存相关的配置)
1 | worker_processes 1; |
参数详解:
1 | proxy_connect_timeout 500; |
6.实践
这是我们NGINX服务器默认主页:
我们访问一下指定文件:
可以访问到,但是我们的nginx服务器上并没有这个图片啊
这是因为我们在配置的时候,把请求转到了后端服务器,我们可以到后端服务器上看一下是否存在这个文件:
我们在后端服务器上找到了图片,那现在我们再把图片删掉,看一下是否还可以访问。
1 | [root@a nginx] |
现在我们再到浏览器访问一下指定文件:
图片不是删除了吗?为什么还可以访问到?这是因为我们配置了缓存,我们可以到配置的路径下查看是否有文件:
我们也可以在浏览器上按F12键查看缓存信息(在配置文件里我们配置了参数):
可以看到,已经生成了缓存文件。我们想要清除缓存的话,只需要在清除缓存网页的URI地址前加上purge即可,
例如:192.168.10.10/purge/jingyu.png
此时再访问的话就找不到文件了
至此,清除缓存模块就完成了。