作者:IT王小二
博客:https://itwxe.com
不知不觉三个月没更新了,这三个月诸事繁忙啊!最近没那么忙了,开始恢复更新。
一、CDN简介
CDN(Content Delivery Network)是指内容分发网络,也称为内容传送网络,这个概念始于1996年,是美国麻省理工学院的一个研究小组为改善互联网的服务质量而提出的。为了能在传统IP网上发布丰富的宽带媒体内容,他们提出在现有互联网基础上建立一个内容分发平台专门为网站提供服务,并于1999年成立了专门的CDN服务公司,为Yahoo提供专业服务。由于CDN是为加快网络访问速度而被优化的网络覆盖层,因此被形象地称为“网络加速器”。
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
CDN的基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。 --摘自百度百科
二、通俗易懂理解CDN
看了上面的话不知道 CDN 用来干啥的?不要紧,这不是有小二在吗。小二这就给小伙伴们娓娓道来。
先不说 CDN,相信小伙伴们都在京东自营店买过东西吧,要是没有的话扣 1 哈。
相信用过京东自营的小伙伴都知道,购买的商品基本隔天就到我们手中,这是为啥呢?
细心的小伙伴都可以看到发货地址都离自己很近,京东将商品存储在全国的八个大仓库里面,当我们从就京东自营店购买一个商品,那么京东会从离你最近的仓库发货,就近发货减少了道路的拥堵和长距离运输,基本隔天就能收到商品,速度非常的快,再也不用漫长的等待。
那么我们访问一个网站时,如果站点服务器是在广州,而访问的用户在北京,那么不同时间段的运营商网络状态和经过长距离的网络传输,访问速度会变慢,那么访问网站时有没有办法类似京东买商品可以快速到货呢,当然有,解决办法之一就是 CDN。
所以说人话, CDN 就是一个你的网站缓存, 而 CDN 节点就类似京东在全国的八大仓库,提前把网站内容存到了 CDN 节点,然后每个请求网站的用户从就近节点获取网站数据,大大减短了网络的长距离传输和网络拥堵的状况下的访问速度,类似下图的效果。
同时不同 CDN 服务商还会针对电信、移动、联通等网络专门设置 CDN 节点,减少网络服务商之间的切换。
三、CDN的好处
- 隐藏服务器源ip。
- 连接所响应速度最快的节点提高访问速度。
- CDN节点缓存减少网站服务器访问压力。
四、CDN原理解析
因为小二是程序猿嘛,所以肯定要扯一扯 CDN 原理的。以我的域名 itwxe.com 为例看看一个请求走的解析路线,目前我的解析服务商是 DNSPod,CDN 使用的是百度云加速。
不使用 CDN 时
- 用户输入访问的域名 itwxe.com,操作系统向 LocalDNS 查询域名的 IP 地址。
- LocalDNS 向 RootDNS 查询域名的授权服务器 (这里假设 LocalDNS 缓存过期)。
- RootDNS 将域名授权 DNS 记录返回给 LocalDNS,我的是 DNSPod。
- LocalDNS 得到域名的授权 DNS 记录后,继续向域名授权 DNS (DNSPod)查询域名的 IP 地址。
- 域名授权 DNS (DNSPod)查询域名记录后,返回给 LocalDNS。
- LocalDNS 将得到的域名映射的 IP 地址,返回给用户端。
- 用户端得到域名 IP 地址后,访问站点服务器。
- 站点服务器接收请求,将内容返回给客户端。
使用 CDN 时
- 用户输入访问的域名 itwxe.com,操作系统向 LocalDNS 查询域名的 IP 地址。
- LocalDNS 向 RootDNS 查询域名的授权服务器 (这里假设 LocalDNS 缓存过期)。
- RootDNS 将域名授权 DNS 记录返回给 LocalDNS,我的是 DNSPod。
- LocalDNS 得到域名的授权 DNS 记录后,继续向域名授权 DNS (DNSPod)查询域名的 IP 地址。
- 域名授权 DNS (DNSPod)查询域名记录后(一般是CNAME,例如我的是itwxe.com.cname.yunjiasu-cdn.net.),返回给 LocalDNS。
- LocalDNS 得到域名记录后,向智能调度 DNS 查询域名的 IP 地址。
- 智能调度 DNS 根据一定的算法和策略,将最适合的 CDN 节点 IP 地址返回给 LocalDNS。
- LocalDNS 将得到的域名 IP 地址,返回给用户端。
- 用户得到域名 IP 地址后,访问站点服务器。
- 站点服务器接收请求,将内容返回给客户端。
使用 dig 命令可以看到请求的 cname 地址和 最终访问的 CDN 节点 IP,如下图访问我的博客访问的节点。
五、免费CDN服务商
有人说过:“免费的往往是最贵的”,所以...
下面列举的免费 CDN 使用时一定要注意免费版官方的使用说明,没有设置好 CDN 的情况下如果被 DDos 了可能一夜之间倾家荡产。
下面列举的免费 CDN 使用时一定要注意免费版官方的使用说明,没有设置好 CDN 的情况下如果被 DDos 了可能一夜之间倾家荡产。
下面列举的免费 CDN 使用时一定要注意免费版官方的使用说明,没有设置好 CDN 的情况下如果被 DDos 了可能一夜之间倾家荡产。
重要的事情说三遍,下面小二开始正式说说目前免费 CDN 有哪些比较好用的。
国外
- Cloudflare
官方网站:https://www.cloudflare.com/zh-cn/
国外最好用的 CDN,没有之一,如果你的服务器在国外且域名没有备案,那么需要使用 CDN 的市况下 Cloudflare 可以说是最好的选择了,免费套餐即不限流量,还能抗 DDos 攻击。当然如果你的服务器在国内且域名已经备案了,那么就使用国内的 CDN 吧,就不是加速 CDN,而是减速 CDN 了。
优点:免费套餐即不限流量,可以抗 DDos 攻击。
缺点:在国内访问速度不佳。
国内
如果需要使用国内的 CDN 服务商服务,那么前提就是域名需要备案了,备案了才能使用国内的 CDN,下面介绍几个常见的。
- 百度云加速
官方网站:https://su.baidu.com/
小二第一个使用的,也是目前正在使用的 CDN 服务商,几个月前还是 CDN 节点数量 6-9 个,流量10g/天,单个上传文件大小 100M,现在没想到都缩水这么多了,不过目前使用速度还可以,免费又大碗。
顺便说一下百度云 CDN,百度云 CDN 和百度云加速不是同一个产品,百度云 CDN 号称可以24小时极速收录,但是我试用了两个月的免费套餐之后还是切换回了百度云加速。原因是24小时极速收录效果不佳,我问了客服,客服说也只是把访问数据提交给收录部门进行处理。
优点:免费套餐缩水后流量5G/天,速度还不错。
缺点:随着免费套餐缩水,CDN节点数量减少,很多功能需要付费使用,同时个人认证需要手持身份证拍照(略麻烦)。
- 奇安信CDN
官方网站:https://wangzhan.qianxin.com/
这个是最近百度云加速免费版套餐缩水和加了很多限制后小二朋友推荐给我的,小二后面会考虑 CDN 从百度云加速切换到奇安信 CDN。因为目前奇安信 CDN 免费不限量,朋友博客测试访问速度还可以,妈妈再也不用担心我会因为 DDos 攻击倾家荡产了。
优点:免费不限量,安全,不用担心 DDos。
缺点:节点少,同时个人认证也需要手持身份证认证(不过朋友说上传个奥特曼都行,只要你网站备案了,个人认证没人审核的)。
- 又拍云
官方网站:https://www.upyun.com/
也是很多博主正在使用的 CDN,申请加入又拍云联盟后将又拍云链接附在网站底部,每个月就可以获得 15GB 的 CDN 流量和 10GB 的存储空间(即对象存储),对象存储自动走 CDN 流量,无需其他配置。
优点:速度快,节点多,有在线客服。
缺点:流量少,又拍云节点经常被打,每年得申请一次又拍云联盟。
其他比较常见的还有 上海云盾、多吉云、七牛云就不一一介绍了。
六、CDN的使用
每个服务商 CDN 的配置界面都不大一样,不好写怎么配置,所以我大致说下 CDN 配置的思路。
1、首先保证域名A记录解析源站IP可以正常访问。
2、接入CDN主要有两种方式,第一种是 NS 解析,第二种是 CNAME 解析,大部分情况使用 CNAME 解析就行了。
3、选择 CNAME 解析后在选择的 CDN 服务商处添加网站,然后添加解析记录,添加解析记录之后会生成一个 CNAME 域名值。
4、复制这个 CNAME 域名值,进入你的域名解析服务商界面处,将解析记录解析成 CDN 生成的 CNAME 域名值。
配置成功之后就可以愉快的使用 CDN 了,当然这只是最基本的配置,还有很多需要注意的地方,例如缓存策略,缓存时间,免费套餐的访问带宽阈值,免费流量使用完之后的策略...都是需要注意的地方。
因为百度云加速小二已经配置好了,不想还原设置重新设置,所以下面我就按上面的步骤以奇安信 CDN 为例说下怎么配置 CDN。
1、首先保证域名解析源站能访问这就不用说了吧。
2、奇安信 CDN 官网注册账号实名认证后,在域名列表页面,输入你的域名,选择 CNAME 解析,点击添加域名。
3、添加域名后点击添加子域名,添加记录,小二选择的是回源到 IP,所以添加两条A记录,如果是回源到域名,由别的域名提供IP,则添加 CNAME 记录。小二添加了 itwxe.com 和 www.itwxe.com 两条记录,配置结果如下图,最终会生成两条记录,这就是我们在域名解析处需要用到的两条记录。
4、在解析出得到两条解析记录后,进入域名解析配置界面,小二的域名是在腾讯云购买的,解析服务商是 DNSPod,复制步骤三的两条记录添加到 DNSPod 中,同时需要注意的是需要一一对应,这样就就完成了最简单的 CDN 配置了。小二的示例如下图。
等待 DNSPod 解析更改生效,腾讯云免费版DNS解析套餐更改记录生效时间是 10 分钟,此时可以再次使用 dig 命令,可以看到奇安信 CDN 已经生效了,不再是百度云加速。
...
等了10分钟,我也以为要成功了,毕竟小二可是老司机了,结果一访问网站,发现访问不了了!
以小二多年跳坑的经验,九成是CDN节点和源站SSL证书之间证书的问题,待我上传个 SSL 证书啥问题都解决了,当我以为故事到这里就结束了,结果...
不支持泛域名的话还是老老实实百度云加速吧,一个一个配置子域名可太累了...
当然配置 CDN 主要的流程就是上面的4个步骤,配置过程中有问题的客官欢迎留言评论。
都读到这里了,来个 点赞、评论、关注、收藏 吧!