阿里云 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 动态密钥套件,敬请关注!

目录
相关文章
|
5天前
|
缓存 安全 算法
网络原理 HTTP _ HTTPS
网络原理 HTTP _ HTTPS
10 0
|
13天前
|
安全 网络协议 算法
【计算机网络】http协议的原理与应用,https是如何保证安全传输的
【计算机网络】http协议的原理与应用,https是如何保证安全传输的
|
14天前
使用阿里云语音通知http批量推送模式获取用户回执短信内容
本文使用阿里云语音通知配置http批量推送模式获取用户回执信息,并进行测试
38 0
|
14天前
|
缓存 边缘计算 网络协议
阿里云CDN介绍
阿里云CDN介绍
27 0
|
14天前
|
网络协议 安全 算法
HTTP协议与HTTPS协议
HTTP协议与HTTPS协议
|
15天前
|
数据采集 缓存 网络协议
静态代理IP是否支持HTTP和HTTPS?
静态代理IP支持HTTP、HTTPS、FTP、Socks5等协议,HTTP协议因其简单、灵活而常用,通常比HTTPS速度快,因无需加密处理。HTTP代理比SOCKS5代理通常更快,因为HTTP专注于HTTP请求,而SOCKS5处理多种网络流量。静态HTTP代理适合浏览器和爬虫,SOCKS5代理支持更多协议,如TCP、UDP。选择取决于应用场景和需求。
|
15天前
|
网络协议 安全
【专栏】`curl`是广泛用于网络编程和自动化脚本的命令行工具,支持HTTP、HTTPS等协议
【4月更文挑战第28天】`curl`是广泛用于网络编程和自动化脚本的命令行工具,支持HTTP、HTTPS等协议。在处理大文件或慢速服务器时,设置超时参数至关重要。本文介绍了`curl`的超时参数,如`-m`(最大操作时间)、`-c`(连接超时)、`--dns-timeout`(DNS解析超时)和`-t`(时间条件)。通过示例展示了如何设置这些超时,并提到了一些高级技巧和注意事项,如错误处理和带宽限制。合理设置超时能提高效率和可靠性,对编写健壮的自动化脚本非常有用。
|
19天前
|
安全 Go
解决https页面加载http资源报错
请注意,混合内容可能导致安全性问题,因此在使用上述方法时要小心。最好的方式是尽量减少或完全消除混合内容,以确保页面的安全性。
23 0
|
3天前
|
弹性计算 运维 监控
解密阿里云弹性计算:探索云服务器ECS的核心功能
阿里云ECS是核心计算服务,提供弹性云服务器资源,支持实例按需配置、集群管理和监控,集成安全防护,确保服务稳定、安全,助力高效业务运营。
15 0
|
12天前
|
存储 弹性计算 固态存储
阿里云服务器CPU内存配置详细指南,如何选择合适云服务器配置?
阿里云服务器配置选择涉及CPU、内存、公网带宽和磁盘。个人开发者或中小企业推荐使用轻量应用服务器或ECS经济型e实例,如2核2G3M配置,适合低流量网站。企业用户则应选择企业级独享型ECS,如通用算力型u1、计算型c7或通用型g7,至少2核4G配置,公网带宽建议5M,系统盘可选SSD或ESSD云盘。选择时考虑实际应用需求和性能稳定性。
123 6