缓存代理的概述
wed代理的工作机制
缓存网页对象,减少重复请求
web缓存代理作用
1.存储一些之前被访问的,且可能将要被再次访问的静态网络资源对象,使用户可以直接从缓存代理服务器获取资源,从而减少上游原始服务器的负载压力,加快整个访问速度。
2.代理服务器还可以代替客户端去获取原始服务器资源,从而隐藏客户端真实地址
常见的web缓存代理应用:
本地实现:nginx 、squid、varnish
云环境远端实现:CDN
数据库缓存代理应用
redis、memcached
--------------------------------------------------------------------------------------------------------------------------------
nginx缓存代理
实验准备
关闭防火墙在三台虚拟机上安装nginxweb1:192.168.116.12web2:192.168.116.13缓存服务器:192.168.116.111
配置web网页
1.cd /usr/share/nginx/html/
echo "this is web01 test page" > test.html
echo "this is web02 test page" > test.html
systemctl enable --now nginx
打开浏览器验证
配置缓存服务器
1.先关闭三台服务器的长连接
vim /etc/nginx/nginx.conf
27 keepalive_timeout 0;
systemctl restart nginx
2.在缓存服务器里接着配置
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
---------------------------------------------------
proxy_cache_path 指定缓存目录位置
levels=1 定义你的目录层级,2层则是1:2
keys_zone=my_cache:10m 定义共享区域的名称,:10m,定义多大
max_size=10G 缓存存储空间大小
inactive=5m 5分钟的缓存效果
use_temp_path=off 是否保存临时文件,off不保存----------------------------------------------------
添加指定的web服务器upstream cache_server {server 192.168.116.12:80;server 192.168.116.13:80;
}
vim /etc/nginx/conf.d/default.confserver {listen 80;server_name cache.lion.club;#URI 中后缀为 .txt 或 .text 的设置变量值为 "no cache"if ($request_uri ~ \.(txt|text)$) {set $cache_name "no cache";}location / {proxy_no_cache $cache_name; #判断该变量是否有值,如果有值则不进行缓存,如果没有值则进行缓存proxy_cache my_cache; #设置缓存内存proxy_cache_valid 200 5m; #缓存状态为200的请求,缓存时长为5分钟proxy_cache_key $request_uri; #缓存文件的key为请求的URIadd_header Nginx-Cache-Status $upstream_cache_status #把缓存状态设置为头部信息,响应给客户端proxy_pass http://cache_server; #代理转发}
}
CDN
1、CDN概述
内容分发网络,在最接近用户的网络“边缘节点”增加一层CDN缓存代理服务器,将源站点的内容发布CDN节点,可以使用户可以就近取得所需的内容,提高用户访问网站的响应速度。
2、工作原理
将源站点(web应用服务器)的静态网页资源缓存到CDN节点上,用户请求资源时,就近返回CDN节点上缓存的资源,而不需要每个用户的请求都从源站点获取,从而避免网络拥塞、缓解源站点的压力,保证用户访问资源的速度和体验。
3、CDN内容是如何获取的
1.对于热点资源,要定时做缓存预热
2.如果CDN节点没有,会从上游原始服务器或源站点获取资源,并同步到CDN节点的缓存中