目录
1.WEB缓存代理
1.1 WEB缓存代理作用
1.2 常见WEB缓存代理
1.3 Nginx 配置 缓存代理
2. CDN内容分发网络
1.WEB缓存代理
1.1 WEB缓存代理作用
存储一些之前给访问过的,且可能要被再次访问的静态网页资源对象,使客户端可以直接从缓存代理服务器获取资源,从而减少上游源服务器的负载压力,加快网站的整体访问速度。
代理服务器还可以代替客户端去获取源服务器的资源,从而隐藏客户端的真实地址。
1.2 常见WEB缓存代理
常见的Web缓存代理应用:本地实现 Nginx Squid Varnish
云环境远端实现 CDN
数据库缓存代理:Redis Memcached
1.3 Nginx 配置 缓存代理
初始化系统关闭防火墙
安装nginx并启动
root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
local.repo nginx.repo repo.bak
[root@localhost yum.repos.d]# mount /dev/sr0 /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost yum.repos.d]# yum install -y nginx
systemctl enable --now nginx
7-1 准备页面
cd /usr/share/nginx/html/
vim test.html
<html>
<body>
<h1>this is wangyuan test web page!</h1>
<img src='wy.jpg' />
</body>
</html>
7-2准备页面
cd /usr/share/nginx/html/
vim test.html
<html>
<body>
<h1>this is dingzhne test web page!</h1>
<img src='dz.jpg' />
</body>
</html>
关闭长连接 keepalive_timeout 0; #三台主机都关闭
7-5设置网页缓存
创建缓存文件,数据需要写入
[root@localhost ~]# mkdir /data/nginx/cache -p
[root@localhost ~]# chown nginx:nginx /data/nginx/cache
[root@localhost ~]# cd /data/nginx/
[root@localhost nginx]# ll
总用量 0
drwxr-xr-x 2 nginx nginx 6 6月 29 19:35 cache
http {
......
proxy_cache_path /data/nginx/cache缓存目录 levels=1目录层级 keys_zone=my_cache:10m 缓存共享内存区的名称和大小 max_size=10g 缓存数据上限 inactive=60m缓存失效时间 use_temp_path=off;是否存放临时文件
#
upstream XXXX {
server IP:PORT; #定义上游源服务器的IP和端口
.....
}
server {
listen IP:PROT;
server_name 主机名;
location 匹配路径 {
proxy_cache my_cache; #指定缓存共享内存区的名称
proxy_cache_valid 200 60m; #指定有效缓存的状态码 缓存时间;
proxy_cache_key $request_uri; #指定缓存数据的key为请求的URL
add_header Nginx_Cache_Status $upstream_cache_status; #添加请求头显示缓存状态
proxy_pass http://192.168.80.10; #设置没有命令缓存时的代理转发
proxy_no_cache $自定义变量; #通过判断自定义变量是否有值来决定是否进行缓存
}
}
}
7-1和7-2相互传输图片,也会做负载均衡
2. CDN内容分发网络
2.1 什么是CDN
其实 CDN 就是内容分发网络的意思,其英文全称为 Content Delivery Network。简单地说,CDN 可以提前把数据存在离用户最近的数据节点,从而避免长途跋涉经过长途骨干网,最终达到减少骨干网负担、提高访问速度的目的。
按照我们上面的场景,如果没有 CDN 的话,每次请求都需要从网站服务器经过公网出口、长途骨干网、用户接入局域网,最终到达浏览器。但是当有了 CDN 之后,可能就变成了下面这样:
浏览器请求图片数据时,会先去 CDN 缓存服务器获取。如果获取到数据,那么就直接返回。否则才会经过长途骨干网,最终到达网站服务器获取图片数据。那么只要我们提前在 CDN 缓存服务器上传图片,那么我们就可以极大地减少网络流量,同时减少网络延迟。
从上图我们可能会觉得:这不就是在长途骨干网和用户局域网中间,加了一个服务器嘛。但事实上可并不是这样,CDN 其实还缩短了请求数据的距离。
我们知道用户所处的位置可能是全国各地,为了尽可能地减少网络传输的延时,一般都会在离用户较近的地方设置 CDN 缓存服务器,例如:在华南、华北、华东、西南设置一个主 CDN 服务器,这样各个地区的用户就可以直接请求对应的 CDN 服务器,而不需要来回跑大半个中国,极大地提高了效率!
因此,当我们说内容分发网络的时候,脑海里应该有如下这样一张图片:遍布全国各地的 CDN 缓存服务器,组成了我们的内容分发网络。每次用户请求都会到离他最近的 CDN 服务器请求数据,从而极大地提高访问速度。
2.1 CDN工作流程
-
浏览器发起图片 URL 请求,经过本地 DNS 解析,会将域名解析权交给域名 CNAME 指向的 CDN 专用 DNS 服务器。
-
CDN 的 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址返回给浏览器。
-
浏览器向 CDN 全局负载均衡设备发起 URL 请求。
-
CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的 URL,选择一台用户所属区域的区域负载均衡设备,向其发起请求。
-
区域负载均衡设备会为用户选择最合适的 CDN 缓存服务器(考虑的依据包括:服务器负载情况,距离用户的距离等),并返回给全局负载均衡设备。
-
全局负载均衡设备将选中的 CDN 缓存服务器 IP 地址返回给用户。
-
用户向 CDN 缓存服务器发起请求,缓存服务器响应用户请求,最终将用户所需要偶的内容返回给浏览器。
使用 CDN 服务的网站,只需要将域名解析权交给 CDN 服务商,接着将需要分发的内容上传到 CDN,就可以实现内容加速了!