彻底CDN它的原理以及配置实践【玩转华为云】

龙哥手记 发表于 2022/05/29 09:27:00 2022/05/29
【摘要】 手把手带你搞懂CDN如何配置,解答疑问及WAF进行防护实践

本文的主要内容有

  • 一 CDN定义及优势
  • 二 基本概念要搞懂
  • 三 工作原理是什么
  • 四 应用场景在哪
  • 五 CDN如何加速WAF防护资源

一 🙈 CDN定义及优势

1.1 如何定义

CDN(Content Delivery Network)内容分发网络它是在现有互联网基础之上的一层智能虚拟网络,在网络各处部署节点服务器,实现将源站内容分发至所有CDN节点上面来,使用户可以就近获得所需的内容。CDN服务缩短了用户查看内容的访问延迟,提高了用户访问网站的响应速度与网站的可用性,解决了网络带宽小、用户访问量大、网点分布不均等问题;

不过咱们华为云CDN把源站资源缓存到遍布全球的加速节点服务器,当终端用户访问资源,直接无需回源,CDN服务器通过一组预先定义好的策略(如内容类型、地理区域、网络负载状况等),直接把当时能够最快响应用户的CDN节点IP地址提供给用户,使用户可以以最快的速度获得网站内容;

华为云CDN加速节点资源丰富,有2000+中国大陆加速节点,800+中国大陆境外加速节点。有充足的带宽资源,全网带宽输出能力不低于150Tbps。涵盖了电信、联通、移动、教育网等主流运营商,以及多家中小型运营商。覆盖130多个国家/地区,支持运营商网络超过1,600家。保证将用户请求精准调度至最优边缘节点,提供有效且稳定的加速效果,强大基础设施这个把心放在肚子里吧;

1.2 优势有哪些

  • 节点丰富
    加速节点资源丰富,2000+中国大陆加速节点,800+中国大陆境外加速节点。
    充足的带宽资源,全网带宽输出能力不低于150Tbps。
    涵盖了电信、联通、移动、教育网等主流运营商,以及多家中小型运营商。保证将用户请求精准调度至最优边缘节点,提供了有效且稳定的加速效果。
  • 智能调度
    全球更加精准的IP库,具有不断进化的能力,调度精准率最高99.99%
    CDN Net Turbo低时延,大数据实时反馈服务质量,动态调整用户的节点
  • 安全防护
    华为云为客户提供中立、安全、可靠的云CDN服务
    支持全网HTTPS安全传输,网站防盗链等高级安全控制功能
  • 操作简单
    接入方式简单快速,提供自助化的域名配置
    支持多种可定制配置项,包括自定义防盗链、缓存策略、HTTPS证书等
    方便客户进行统计分析、日志管理、自定义缓存策略
  • 稳定可靠
    拥有全业务加速的技术能力,包括网站加速、下载加速、点播加速、全站加速
    针对客户的多种业务提供一站式的加速解决方案,提升整体用户体验;

二 🤩 基础概念要搞懂

  • 静态资源:每次访问得到的都是相同的文件,例如:图片、视频、网站中的文件(html、css、js)、软件安装包、apk文件、压缩包文件等。

  • 动态资源:每次访问得到的都是不同的文件,例如:网站中的文件(asp、jsp、php、perl、cgi)、API接口、数据库交互请求等。

  • 加速域名:是用户提供的需要使用CDN加速服务的域名,域名是便于记忆和沟通的一组服务器的地址,应用于网站,电子邮件,FTP等。

  • CNAME记录:是域名解析中的别名记录(Canonical Name),允许将多个域名映射到同一个域名。

咱举个例子:您有一台服务器存放了一些文件,可以通过file.example.com访问该资源,但是希望通过另一个域名data.example.com也能访问;那么您可以在DNS解析服务商处新增一条CNAME记录,将data.example.com指向file.example.com,添加CNAME记录后,所有访问data.example.com的请求就会指向file.example.com,获得相同内容,就是折磨简单;

  • CNAME域名:用户在管理控制台添加加速域名后,系统会为加速域名分配一个对应的“CNAME域名”(域名形式为:..c.cdnhwc1.com)。用户需要在域名服务商处,配置一条CNAME记录,将加速域名指向“CNAME域名”,记录生效后,域名解析的工作就正式转向CDN服务,该域名所有的请求都将转向CDN节点,达到加速效果。

  • 源站:指用户的业务服务器,即被加速分发数据的来源。

  • DNS:TCP/IP网络中的功能实体,通过该服务器,用户只通过域名就可以访问对应的服务器。在TCP/IP网络中域名与IP地址一一对应,域名便于记忆,但网络中的服务器间只能通过IP地址相互识别,域名和IP地址之间的转换称为域名解析,域名解析需要通过专门的域名解析服务器来完成,说白了DNS就是进行域名解析的服务器;

咱还是举个栗子假如您访问xxx.abc.com会通过DNS转换成220.xxx.xxx.xxx(IP地址),那么可以用华为云解析,也可以使用其他的DNS服务商完成解析;

  • 边缘节点:边缘节点也称CDN节点、Cache节点等,指距离最终用户接入具有较少的中间环节的网络节点,对最终接入用户有较好的响应能力和连接速度;

  • 回源:CDN节点未缓存资源或者缓存资源已到期时,节点会回源站获取资源,返回给客户端;

咱们还是举个例子:您访问某个URL,如果解析到CDN节点未缓存该资源,那您的访问请求会直接打到源站获取资源,并根据URL请求返回;

  • 回源HOST:源站决定了回源时,请求到源站的IP地址。回源HOST决定回源请求访问到该IP地址的哪个站点。

还是举个例子:源站为域名时,源站为www.xxx.com回源HOST为www.abc.com实际回源的是www.xxx.com解析到的IP站点www.abc.com
源站为IP地址时,源站为1.1.1.1,回源HOST为www.abc.com实际回源的是1.1.1.1对应主机上的站点www.abc.com

  • SSL/TLS:它是一个构架于TCP之上的安全套接层,是为网络通信提供安全及数据完整性的一种安全协议。标准化之后的SSL名称为TLS(Transport Layer Security,传输层安全协议);

  • URL参数:根据业务需要判断是否启用该项配置,对用户请求URL中“?”之后的参数进行过滤,提高缓存命中率;

敲黑板啦:使用CDN后,时延、丢包率、回源率通常会降低,缓存命中率则会提高。但是由于业务场景和业务类型不同,即使您选择了相同配置的CDN服务,实际产生的加速效果也不相同,因此本文仅提供了定性的指标以供观测
回源率、缓存命中率是指使用CDN后的衡量指标,如果您没有使用CDN,回源请求数为100%,缓存命中率为0;

三 ⛳ 工作原理是什么

当用户访问使用CDN服务的网站时,本地DNS服务器通过CNAME方式把最终域名请求重定向到CDN服务。CDN通过一组预先定义好的策略(如内容类型、地理区域、网络负载状况等),把当时能够最快响应用户的CDN节点IP地址提供给用户,使用户可以以最快的速度获得网站内容。

使用CDN后的HTTP请求处理流程如下

HTTP请求流程如上图:

  • 1 首先用户在浏览器输入要访问的网站域名 www.example.com,向本地DNS发起域名解析请求
  • 2 然后本地DNS检查缓存中是否有www.example.com的IP地址记录,如果有的话,则直接返回给终端用户;那如果没有,则向网站授权DNS查询
  • 3 网站DNS服务器解析发现域名已经解析了CNAME:www.example.com.c.cdnhwc1.com
  • 4 请求被指向CDN服务
  • 5 CDN对域名进行智能解析,把响应速度最快的CDN节点IP地址返回给本地DNS
  • 6 用户把获取响应速度最快的CDN节点IP地址
  • 7 浏览器在得到最佳节点的IP地址以后,向CDN节点发出访问请求
    • 如果说该IP地址对应的节点已缓存该资源,那么节点将数据直接返回给用户,如图中步骤7和8,然后请求结束
    • 如果该IP地址对应的节点未缓存该资源,节点回源请求资源。获取资源后,结合用户自定义配置的缓存策略,将资源缓存至节点,如图中的北京节点,并返回给用户,请求结束

域名配额限制

为防止资源被滥用,所以平台限定了各服务资源的配额,对用户的资源数量和容量也做了限制

四 🎨 应用场景在哪

  • 网站加速
    适用于有加速需求的网站,包括门户网站、电商平台、资讯APP、UGC应用(User Generated Content,用户原创内容)等。CDN网络能够对加速域名下的静态内容提供良好的加速服务。支持自定义缓存规则,用户可以根据数据需求设置缓存过期时间,缓存格式包括但不限于zip、exe、wmv、gif、png、bmp、wma、rar、jpeg、jpg等
  • 文件下载加速
    适用于使用HTTP/HTTPS文件下载业务的网站、下载工具、游戏客户端、APP商店等。现在越来越多的新业务需要通过网络对客户端软件进行实时更新,包括APP更新,手游更新等,传统的下载类业务也需要支持更多的文件数量和更大的文件,如果所有的请求都通过源站服务器来处理,服务器和网络会成为很大的瓶颈,导致下载体验变差。使用CDN下载加速可以将下载量大的内容分发到各地的CDN节点,有效减轻源站的压力,同时保证了客户端高速下载的需求
  • 点播加速
    适用于提供音视频点播服务的客户。例如:在线教育类网站、在线视频分享网站、互联网电视点播平台、音乐视频点播APP等。传统的点播服务会加大服务器的负载,并消耗巨大的带宽资源,同时又无法保证终端用户访问时需要的高速体验,CDN点播加速可以提供快速、稳定和安全的点播加速服务,通过分布在各个区域的CDN节点,将音视频内容扩展到距离用户较近的地方,随时随地为用户提供高品质的访问体验
  • 全站加速
    适用于各行业动静态内容混合,含较多动态资源请求(如asp、jsp、php等格式的文件)的网站。全站加速融合了动态和静态加速,用户请求资源时,静态内容从边缘节点就近获取,动态内容通过动态加速技术智能选择较优路由回源获取。CDN全站加速有效提升动态页面的加载速度,避开网络拥堵路由,提高访问成功率,实现网站整体加速与实时优化

五 🚀 CDN如何加速WAF防护资源

5.1 搞明白WAF是啥

Web应用防火墙(WAF)能对网站业务流量进行多维度检测和防护,结合深度机器学习智能识别恶意请求特征与防御未知的威胁,能全面避免网站被黑客恶意攻击和入侵;

  • 当Web基础防护开启后,默认防范的是SQL注入、XSS跨站脚本、远程溢出攻击、文件包含、Bash漏洞攻击、远程命令执行、目录遍历、敏感文件访问、命令/代码注入等常规的Web攻击。您还可以根据实际使用需求,开启Webshell检测、深度反逃逸检测和header全检测等Web基础防护;
  • 如果还不够的话,配置精准访问访问防护规则,对常见的HTTP字段(如IP、路径、Referer、User Agent、Params等)进行条件组合,用来筛选访问请求,并对命中条件的请求设置仅记录、放行或阻断操作;精准访问防护规则可以添加引用表,引用表防护规则对所有防护域名都生效,即所有防护域名都可以使用精准防护规则的引用表;

更多详情请戳它https://support.huaweicloud.com/waf/index.html

5.2 背景信息

CDN是构建在现有互联网基础之上的一层智能虚拟网络,通过在网络各处部署节点服务器,实现将源站内容分发至所有CDN节点,使用户可以就近获得所需的内容,所以接入CDN的网站都能有比较快的响应速度。

如果您的网站对安全性能要求比较高,同时又有加速的需求,可以使用华为云CDN联动WAF配置,实现加速的同时防护Web攻击;

5.3 CDN+WAF的配置原理

CDN+WAF联动的业务流向为:CDN>WAF>源站,流量由CDN转发到WAF,WAF再将流量转到源站,实现网站加速、流量检测和攻击拦截,不懂看下面;

5.4 配置场景

来配您的WAF在华为云上面举例,给您介绍及开通CDN+WAF联动部署,若您的WAF在其它云服务,请参考完成全部配置;

场景1:已买WAF并添加防护域名,配置CDN+WAF联动

如果您已把域名接入WAF防御,要配置CDN+WAF联动,您需先把WAF域名基本信息中的“是否已使用代理”改成“是”,WAF才能够对真实源IP进行安全策略进行防御;然后在CDN侧加加速域名,把WAF的CNAME作为CDN的源站,CDN就能把流量转发给WAF,实现加速和Web攻击防御联动啦;

使用是有限制的:

  • CDN的加速域名仅支持默认端口,如果用非标端口的方式接入WAF防护域名那么无法接入CDN服务器
  • 如果您在WAF侧给防护域名配置了HTTPS证书的话,请同步在CDN侧完成证书配置先,否则会导致域名没有办法访问的

详细操作步骤是这样

  1. 根据修改WAF防护域名基本信息指导修改防护域名的代理设置
  • 是否已使用代理:是
  1. 复制WAF的CNAME
  2. 在CDN侧添加加速域名(也就是WAF的防护域名)
    a.登录华为云控制台,在控制台首页左上角选择“服务列表>CDN与智能边缘 > CDN”,进入CDN控制台
    b.左侧导航栏选择“域名管理”,进入域名管理页面
    c.域名管理界面,单击“添加域名”,然后在弹出的对话框中配置域名参数
    d.然后源站类型:源站域名,在下方输入WAF的CNAME域名
  3. 单击“确定”完成域名的添加,CDN会为加速域名生成专属CNAME。

如果您的WAF是独享模式,需要使用“源站IP”接入CDN,“源站”文本框中请输入为弹性负载均衡绑定弹性公网IP就行
如果您的WAF是ELB模式,需要使用“源站IP”接入CDN,“源站”文本框中请输入WAF实例绑定ELB的弹性公网IP就行

  1. (可选)添加加速域名后,为了保证顺利切换不影响业务,建议你先做测试然后再切换DNS解析哈;
  2. 在DNS域名服务商哪里修改解析记录,然后配置CDN提供的CNAME,如果不会百度如何配置CNAME;
  3. 验证CNAME是否生效,打开Windows操作系统中的cmd程序,输入如下指令:
nslookup -qt=cname 加速域名

如果要回显CNAME,则表明CNAME配置已经生效啦,如下面这样:

如果您暂时没用CDN和WAF,我也建议您按照场景1的方式先接入WAF,然后再配置联动;

场景2:加速域名已经接入CDN加速,配置CDN+WAF联动

如果您的域名已接入CDN加速,那么需要配置CDN+WAF联动,然后您需要先在WAF添加防护域名,“是否已使用代理”选项选“是”,WAF才能够对真实源IP进行安全防御;然后把CDN侧加速域名的源站修改WAF的CNAME,CDN才能将流量转发给WAF,实现加速和Web攻击防御联动;

这个使用也是有限制的:

如果您在CDN侧给加速域名配置了HTTPS证书,请同步在WAF侧完成证书配置,否则会导致域名无法访问的话;

详细操作步骤

将网站信息(源站服务器的IP、端口等信息)添加到WAF。配置如下

  • 非标准端口:去勾选
  • 是否已使用代理:是。

    配置完后,WAF会为该域名生成一个专属的CNAME

建议您在配置好WAF后先验证业务是否正常,然后修改CDN源站哈

  1. 将CDN加速域名的源站地址修改为WAF的CNAME域名
    a.登录华为云控制台,在控制台首页中选择“CDN与智能边缘 > CDN”,进入CDN控制台
    b.在左侧菜单栏中,选择“域名管理”
    c.在域名列表中,单击需要修改的域名或域名所在行的“设置”,进入域名配置页面
    d.选择“基本配置”页签
    e.在源站配置模块,单击“编辑”,系统弹出“修改源站信息”框框
    • 类型:源站域名
    • 源站:填写WAF生成的CNAME域名
    • 回源端口:默认端口

还是一样 如果您的WAF是独享模式:要使用“源站IP”接入CDN,“源站”文本框中请输入为弹性负载均衡绑定弹性公网IP;
如果您的WAF是ELB模式,要使用“源站IP”接入CDN,“源站”文本框中请输入WAF实例绑定ELB的弹性公网IP;

完成以上配置后,流量经过CDN转发到WAF,达到加速和Web攻击防护的目的;

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。