Web缓存代理和CDN 内容分发网络

目录

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-3设置网页缓存


创建缓存文件,数据需要写入
[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


 vim /etc/nginx/nginx.conf
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和端口   
         .....
    }

   

vim /etc/nginx/conf.d/default.conf
 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相互传输图片,也会做负载均衡

7-1

7-2 

[root@localhost html]# scp /usr/share/nginx/html/dz.jpg root@192.168.80.10:/usr/share/nginx/html/
root@192.168.80.10's password: 
dz.jpg    

 

 

 

 以二进制格式保存的缓存数据

tail -f /var/log/nginx/access.log

 7-1

 通过nginx代理服务器命中缓存获取数据,查看源服务器日志中并无访问记录​​​​​​

查看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工作流程 

  1. 浏览器发起图片 URL 请求,经过本地 DNS 解析,会将域名解析权交给域名 CNAME 指向的 CDN 专用 DNS 服务器。

  2. CDN 的 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址返回给浏览器。

  3. 浏览器向 CDN 全局负载均衡设备发起 URL 请求。

  4. CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的 URL,选择一台用户所属区域的区域负载均衡设备,向其发起请求。

  5. 区域负载均衡设备会为用户选择最合适的 CDN 缓存服务器(考虑的依据包括:服务器负载情况,距离用户的距离等),并返回给全局负载均衡设备。

  6. 全局负载均衡设备将选中的 CDN 缓存服务器 IP 地址返回给用户。

  7. 用户向 CDN 缓存服务器发起请求,缓存服务器响应用户请求,最终将用户所需要偶的内容返回给浏览器。

使用 CDN 服务的网站,只需要将域名解析权交给 CDN 服务商,接着将需要分发的内容上传到 CDN,就可以实现内容加速了!

  • 24
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值