《Windows Azure Platform 系列文章目录》

  

  最近处理了很多CDN的问题,在这里记录一下。

  1.首先介绍一下CDN的原理:

  (1)用户输入需要访问的URL (比如www.contoso.cn),经过本地的DNS Server进行解析

  (2)DNS Server返回www.contoso.cn域名对应的CNAME:www.contoso.cn.mschcdn.com

  (3)为了得到实际IP地址,浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址

  (4)用户向该IP节点(CDN服务器)发出请求

  (5)全局负载均衡设备把服务器的IP地址返回给用户

  (6)由于是第一次访问,CDN服务器会向原web站点请求,并缓存内容

  (7)请求结果发给用户

  2.国内使用Azure CDN需要准备好:

  (1)用户自己的域名,比如cdn.contoso.cn

  (2)该域名(cdn.contoso.cn) 必须进行过ICP备案,并且有ICP备案编号

  3.Azure支持的CDN加速类型:

  (1)HTTP加速

  (2)HTTPS加速

  4.创建Azure China CDN,如下图所示:

  

  上图中:

  (1)Custom Domain,是用户自己的域名,这里假设为:cdn.contoso.cn

  (2)ICP Number,是用户域名的ICP备案号

  (3)Acceleration Type,是CDN的加速类型。Azure CDN支持的加速类型有

  -Web加速

  -下载加速

  -VOD加速

  -图片处理加速

  针对不同的加速类型,Azure CDN的缓存策略是不同的。我会在后面的内容做项目的介绍

  (4)Origin Domain Type,是源站类型。Azure CDN支持的源站类型有

  -Cloud Service,云服务

  -Storage Account,存储账户

  -Web App,网站服务

  -Media Service,媒体服务

  -Custom origin domain,用户自定义域名。即CDN的源站,可以不在微软云Azure平台,可以在用户自己的IDC环境。

  (5)Origin host header,表示访问CDN的HTTP Host 头

  

  5.我们输入上面的信息并提交后,Azure CDN会验证用户自定义域名和ICP备案是否有效。此时CDN状态为Creating。如下图:

  

  

  6.等待Azure平台验证通过后,上面的Status状态为Ready,同时微软云Azure CDN会提供一个新的二级域名,假设为cdn.contoso.cn.mschcdn.com

  

  7.接下来,我们需要在DNS供应商那边,把自己的域名:cdn.contoso.cn,增加CNAME到,cdn.contoso.cn.mschcdn.com

  8.进入CDN的配置页面,我们点击Manage。如下图:

  

  注意事项1:在弹出的窗口中,如果源站是Web App的话,因为Web App绑定了HOST。所以HOST头必须为Web App的默认域名 (******.chinacloudsites.cn)

  

  注意事项2:当CDN的Header中包含Set-Cookie时,默认是不缓存的。

  如果我们的源站使用Web App的话,Web App默认HTTP Head包含Cookie ARR Affinity。如下图:

  

  我们有两种解决方案(二选一)

  (1)关闭Azure Web App ARR Affnity

  

  (2)或者在CDN缓存规则里,设置忽略Cookie

  

  注意事项3:注意修改默认的缓存规则

  当我们上面介绍了,CDN支持的加速类型有:Web加速,下载加速,VOD加速等

  Web 加速,默认的缓存规则如下:

  

  下载加速,默认的缓存规则如下:

  

  我们需要按照自己的业务需求,设置自己的缓存规则。比如上面的下载加速,默认是不提供png, jpg, gif, jpeg下载的。

  我们就需要增加一行缓存内容。如下图:

  

  注意事项4,缓存规则是逐条匹配的

  系统根据配置顺序逐条匹配,最先配置的规则具有最高优先级。规则被匹配后,其后的规则不再被匹配。

  举个例子:

  

  在上图中,虽然我们在缓存内容中,分别匹配了两条规则,分别对应

  -shtml;html;htm

  -png;jpg;gif;jpeg

  但是在不扩展内容中,优先配置了整个根目录,所以后面的缓存内容都无效

  正确的配置应该如下图:

  

  注意事项5:如果我们想主动推动CDN缓存内容,到POP点,可以选择预加载。如下图:

  请注意:预加载只能针对文件操作,无法针对目录操作

  

  

  注意事项6:我们可以通过Chrome,观察Respond Header,来观察是否命中CDN POP点

  首先我们打开Chrome,按F12,选择Network,查看Respond Header X-Cache信息

   如果命中,则如下图:

  

  

  如果没有命中,则参考下图:

  

  注意事项7:如果源站之前有WAF(Web Application Firewall)的情况下,如何配置

  首先我们需要了解数据流向是:客户端->CDN->WAF->源站

  所以CDN的源站信息,指向WAF前端的公网IP地址,HOST根据需要填写。

  如果源站是Azure Web App的话,HOST必须为Web App的默认域名 (******.chinacloudsites.cn)

  最后请WAF的供应商做请求转发即可

Azure China (13) Azure China CDN经验总结的更多相关文章

  1. Windows Azure HandBook (2) Azure China提供的服务

    <Windows Azure Platform 系列文章目录> 对于传统的自建数据中心,从底层的Network,Storage,Servers,Virtualization,中间层的OS, ...

  2. Azure China (2) Azure China管理界面初探

    <Windows Azure Platform 系列文章目录> 首先是Q&A时间 1.我在Azure Global拥有测试账号或者免费的MSDN订阅账号,这个账号可以在国内Azur ...

  3. Windows Azure Active Directory (4) China Azure AD Self Password Reset

    <Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China. 在开始本章内容之前,请读者熟悉笔者之前写的文档: Windows ...

  4. 使用 Azure CLI 在 Azure China Cloud 云平台上手动部署一套 Cloud Foundry

    这篇文章将介绍如何使用 Azure CLI 在 Azure China Cloud 云平台上手动部署一套 Cloud Foundry.本文的目的在于: 了解作为 PaaS 的 Cloud Foundr ...

  5. [SDK2.2]SQL Azure (13) Azure的两种关系型数据库服务:SQL Azure与SQL Server VM的不同

    <Windows Azure Platform 系列文章目录> 如果熟悉Windows Azure平台的用户不难发现,对于SQL Server数据库来说,微软提供了两种服务,分别是: -W ...

  6. Azure Backup (2) Azure备份服务

    <Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China. 本文介绍的Azure管理界面是Classic Model,网址:h ...

  7. Microsoft Azure News(5) Azure新DV2系列虚拟机上线

    <Windows Azure Platform 系列文章目录> 在之前的文章中,笔者了Azure VM虚拟机,分为A系列和D系列2种 Microsoft Azure News(4) Azu ...

  8. Windows 上安装 Azure PowerShell及Azure PowerShell部署虚拟机

    一.Azure PowerShell部署   1.使用 PowerShellGet 在 Windows 上安装 Azure PowerShell 从 Azure PowerShell 版本 6.0 开 ...

  9. 如何使用 Azure PowerShell 在 Azure Marketplace 中查找 Windows VM 映像

    本主题介绍如何使用 Azure PowerShell 在 Azure Marketplace 中查找 VM 映像. 创建 Windows VM 时使用此信息来指定 Marketplace 映像. 确保 ...

随机推荐

  1. [Algorithm] Good Fibonacci

    def good_fibonacci(n): if n<=1: return (n,0) else: (a,b)=good_fibonacci(n-1) return (a+b,a)

  2. 使用libcurl作为Http client

    产品通过HTTP协议为外部提供接口服务,常规情况是客户通过HTTP协议请求服务,服务结束后通过HTTP协议将服务记录POST到请求方. 用原生C实现了一个简单的HTTP Client,只有简单的功能: ...

  3. 螺旋图 comet3 (comet) 不同轴的圆周运动图

    matlab 绘图 螺旋图小实例  动态显示comet3函数(comet显示平面) t=[:]; x=*t*sin(pi/).*cos(*t); y=*t*sin(pi/).*sin(*t); z=* ...

  4. 测试那些事儿—BUG

    一.作为测试人员,你应该这样报BUG: 不要对程序员说,你的代码有BUG. 他的第一反应是:1.你的环境有问题吧:2.你踏马到底会不会用? 如果你委婉的说:你这个程序和预期的不一样,你看看是不是我的方 ...

  5. 20155219 2016-2017-2 《Java程序设计》第6周学习总结

    20155219 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 串流设计 1.串流:Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对 ...

  6. 由testcase数据之分析

    一.获取data来源 1.利用openpyxl从excel表格获取数据,相较于xlrd,openpyxl可以将表格里的样式也传递过来的优势 xlrd  -----------------     ht ...

  7. Java 8 实战

    Java8 函数式接口,方法传递与Lambda Java8新特性 方法作为参数传递给方法,方法成为一等公民 Lambda,匿名函数 Stream API : 将一系列相关操作用流水线的思想分配到CPU ...

  8. java exception 01

    问题:java.util.concurrentmodificationexception 背景:java thread 网上找到的出现的例子如下(项目中真实的code不便给出) public clas ...

  9. LG1861 星之器

    题意 题目背景 Magic Land 上的时间又过了若干世纪„„ 现在, 人们谈论着一个传说:从前,他们的祖先来到了一个位于东方的岛屿, 那里简直就是另外一个世界.善于分析与构造的 Magic Lan ...

  10. 找工作String类(重点,背诵)(本质是一个类)

    一个顶层设计者眼中只有2个东西接口,类(属性,方法) 无论String 类 , HashMap实现类 , Map接口 String str = "Hello" ;    // 定义 ...