有关适合CDN的应用场景,可以先参考这里(连结)。
本文会以「网站」(Web)作为基础,来完成CDN的实作,同时也会实践地端与云端的整合性应用。
实作前准备:
2. 准备测试用的HTML网站:
3. 准备一组Domain,此次实作使用的网域为:higher-cloud.com,站点页面为www.higher-cloud.com
4. 准备AWS CloudFront - AWS的CDN服务,用于进行网站加速。
5. 最后准备一组SSL凭证:用于AWS CloudFront。此处可使用第三方提供的免费SSL凭证,或者是由AWS提供的凭证
实作步骤:
- 登入AWS控制台,并选择CloudFront。
- 选择建立分布(Distributions)
- Origin domain填写 www.higher-cloud.com
- 决定回源是使用HTTP或HTTPS,或是选择 Match viewer,这是根据使用者存取的Port来决定使用80或443 Port来进行回源快取。此处建议以HTTP (Port 80) 来进行回源,可节省加解密的过程,进一步提升回源速度。
- Default cache behavier:
此处是编辑Viewer(网站使用者)的联机设定,可以根据需求调整
1. Http / Https 皆可存取
2. Http强制跳转Https
3. 仅允许Https联机
其余可保持预设。
- Cache key and origin requests:
针对回源、Cache的自定义Policy,可以根据业务需求来进行自定义。此处同样使用预设的建议。
- Function associations:
如果没有特别要自定义CloudFront针对HTTP的处理模式,保持默认即可。
- Setting:
Price Class - 可根据您想要加速分发的地区进行选择,但通常建议第一个选项(Use all edge locations)
- AWS WAF Web ACL:
如果有自定义的ACL (Access Control List)需要部署的话,可以选用此选项,但需要先建立好规则。
- Alternate Domain Name:
在部署CDN后,分发对外的域名(网站使用者会看到的一组网域)。若没有填写,则AWS会提供一个预设的域名。通常建议操作者要自行定义一个域名,提升网站与品牌的标志力。
- Custom SSL certificate:
可以自行提供SSL凭证或直接通过AWS申请免费的SSL凭证。若留空不填写,那么上述自定义的Alternate Domain Name则无法使用。
- 上述步骤完成后点选Create Distributions,即可完成部署。
- 接下来可以使用AWS的预设Domain跟自定义的Domain尝试联机。
- AWS预设Domain:dtytosfxel4su.cloudfront.net
- 自定义Domain:test.higher-cloud.com 成功,但请注意此Domain为CNAME,DNS解析会转址到AWS预设Domain。
- 接下来会以开立在AWS 美国Region的机器来测试网页速度。
网域:www.higher-cloud.com
存取方式:回到源站存取
延迟时间:521ms
网域:dtytosfxel4su.cloudfront.net
存取方式:透过CloudFront进行加速。
延迟时间:48ms
网域:test.higher-cloud.com
存取方式:在DNS托管商进行CNAME,解析test.higher-cloud.com的域名时,会得到dtytosfxel4su.cloudfront.net的结果,并再次解析回传CloudFront的节点。
延迟时间:102ms
结语:
通过上述实作,以商业层面来考虑,AWS CloudFront提供了相当弹性、快速的服务;尽管源站没有进行HTTPS的加密,在最终呈现的地方也可以通过在AWS平台上的操作,简便的取得SSL凭证,并为自己的网站进行加密,从而提升网站的SEO排名以及品牌可靠度。
以用户体验的层面上来说,CDN也提升了用户的联机延迟速度,从上述的图表可以看到,从美国联机源站的速度为500ms左右,使用CDN后,联机延迟降低至50-100ms,对于使用者体验来说也是极大的提升。以使用上而言,市面上的CDN服务操作起来都大同小异,但是根据全球节点分布的不同,CDN质量也会有所差异。除了本次操作的AWS CloudFront,Google Cloud、Alibaba Cloud、Tencent Cloud、Cloudflare都有提供CDN服务。

解决方案架构师
吴佑德 Ted Wu