阿里云 CDN HTTPS 最佳实践系列——HTTP/2-阿里云开发者社区

开发者社区> 樰篱> 正文

阿里云 CDN HTTPS 最佳实践系列——HTTP/2

简介: 阿里云CDN HTTPS最佳实践系列文章,由CDN高防技术专家金九撰写
+关注继续查看

背景

HTTP/2 是最新的 HTTP 协议,已于2015年5月份正式发布,Chrome、 IE11、Safari 以及 Firefox 等主流浏览器已经支持 HTTP/2 协议。阿里云 CDN 在2016年7月份开始全网支持 HTTP/2,是国内第一家全网支持 HTTP/2 的 CDN 提供商。

HTTP/2 是新技术,一些底层代码库在实现时可能不完善,在一些特殊场景下可能就出问题,我们遇到过一些 android 库实现有问题,导致开启 HTTP/2 就经常访问失败,关闭 HTTP/2 就完全正常。所以对于一些 HTTP/2 有问题的域名需要关闭 HTTP/2,一些没有问题的域名不能关闭 HTTP/2。但是 Tengine(nginx)的 http2 开关参数是 ip:port 级别,不是 server 级别,也就是说如果多个域名同时使用同一个 IP,无法针对 server 来打开或者关闭。

HTTPS2_1

上面的配置中,www.a.com 和 www.b.com 使用了同一个 IP 端口, www.a.com 打开了 http2,www.b.com 没有打开 http2,但是 www.b.com 的 http2 同样也被打开了,无法关闭。

我们知道,任何公司的 IP 资源都是稀缺的,很多域名都是共用一个 IP 或者 共用几个 IP,不可能为需要关闭 HTTP/2 的域名分配一个 IP 资源,所以最核心的需求就是针对域名级别来配置 HTTP/2 开启或者关闭。

实现

先来看一看 Tengine 中 ip:port 和 server 的关系:

HTTPS2_2

多个 server 块可能会 listen 同一个 ip:port,一个 server 也可能 listen 多个 ip:port,所以 ip:port 和 server 是多对多的关系,但在 Tengine 配置块中并没有 listen 块,所以从配置文件中直观看 server 块包含了 listen,似乎 server 块比 listen 更底层,从而造成了在一个 server 块 listen 指令参数中配置了 http2 不会影响其他 server 的 http2 的假象,但其实 ip:port 更底层。

如上图所示,在 Tengine 配置解析阶段会把所有 server 块中配置的 listen ip:port 添加到一个 listening servers 表(数组)中,当 http 请求上来之后,先从这个表中查到 addr_conf 信息,在配置中 listen 指令的 flag 参数(比如: ssl、http2)都会放到这个结构中,并没有放到 server 中,所以就会导致这个 ip:port 的 listen 参数对所有关联的 server 生效。

知道了 Tengine 底层实现原理,修复起来也很容易了。我们也对 HTTP/2 开关实现了动态配置,从而HTTP/2 的开关便可以通过 CDN 控制台根据域名来设置了。如图:

HTTPS2_3

需要开启或者关闭 HTTP/2 的域名只需要在 CDN 控制台上修改一下就可以立马生效了。

以上本文内容。目前,阿里云CDN HTTPS已经全面降价,后付费HTTPS 0.05元/万次请求。为了迎接双11,预付费资源包也推出新购特惠:双十一当天30元购买1千万次HTTPS请求数资源包。欢迎大家登录双11会场进行选购。

下一篇我们将介绍CDN HTTPS 动态密钥套件,敬请关注!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
最佳实践:使用阿里云CDN加速OSS访问
用户直接访问OSS资源,访问速度会受到OSS的下行带宽以及Bucket地域的限制。如果通过CDN来访问OSS资源,带宽上限更高,并且可以将OSS的资源缓存至就近的CDN节点,通过CDN节点进行分发,访问速度更快,且费用更低。如果采用动静分离的网站架构,就能够解决海量用户访问的性能瓶颈问题。
845 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4599 0
【最佳实践】CDN访问慢的分析思路和优化方案
使用CDN加速以后还是存在访问慢的情况,如何去分析定位问题、优化网站速度、解决用户问题是一个十分重要的课题。本文介绍了CDN加速访问慢的分析思路,通过归纳的一些原因结合搜集的信息去进一步判断定位问题,帮助用户在遇到问题时有一个更清晰的思考方法论。
1811 0
【 CDN 最佳实践】CDN 加速 OSS 常见问题及处理思路
CDN加速OSS是常见的站点动静分离的方式,可以实现将静态资源存储在OSS上,并通过CDN加速OSS实现静态资源的访问加速效果。但是在实际使用的过程中可能会出现使用方法以及配置上的问题导致使用上出现难题。本文档主要就CDN加速OSS的配置以及各注意事项进行描述已解决本使用场景中遇到的问题。
531 0
上海云栖:金融政企行业的CDN最佳实践
在刚刚结束的上海云栖大会飞天技术汇分论坛上,阿里云视频云产品架构师罗小飞进行了《阿里云CDN——面向金融政企的CDN最佳实践》主题分享,为上海的嘉宾介绍CDN的解决方案与技术服务体系。
2792 0
数据集成到MaxCompute的N种最佳实践(持续更新)
本文汇总数据集成到MaxCompute的各种最佳实践,希望可以帮助到正在或者即将使用MaxCompute的企业和开发者们。 也欢迎您将有关MaxCompute数据集成的实践分享出来,分享方法可扫码加入钉钉群,联系钉钉群主即可。
2046 0
Android端WEEX + HTTPDNS 最佳实践
由于`WebView`并未暴露处设置DNS的接口,因而在`WebView`场景下使用`HttpDns`存在很多无法限制,但如果接入`WEEX`,则可以较好地植入`HTTPDNS`,本文主要介绍在`WEEX`场景下接入`HTTPDNS`的方案细节。
4856 0
+关注
樰篱
阿里云产品运营,专注边缘计算和视频云产品与技术传播
514
文章
59
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载