https如何支持虚拟主机

栏目: 服务器 · 发布时间: 8年前

内容简介:https如何支持虚拟主机

如今(2017年了)在同一个nginx上配置多个域名,是稀松平常的事,纵然是使用https,也不过多配置几个证书的事情,似乎没有什么维护上的困难。然而,细思起来,背后却有很多故事,以至很多网站现在也苦恼不已。

1 基于Host的虚拟主机

Http协议中有Host头,nginx等web服务器正是根据Host的内容,选择不同的虚拟主机。

2 HTTPS 为什么不行

基于Host的虚拟主机,Http没有问题,但是Https不行,为什么呢?因为Https使用SSL/TLS,需要SSL证书才能建立连接,但是同一个nginx上配置了多个SSL证书,使用哪个呢?根据Host选择?这是不可能的,因为Host是Http协议的内容,而这一切发生在发送Http请求前,此时Host还没发送呢。

3 古老的解决方案

在服务器上配置多个IP,一个虚拟主机监听一个IP,对应一个域名,一个SSL证书。这没啥毛病,就是维护起来非常困难。一是nginx配置复杂,每台机器的nginx都和本机的IP有关。二是HA比较困难,VIP漂移也白漂,因为nginx里面IP写死了。

使用多域名证书或者泛域名证书也是一个办法,少量域名还行,域名多了应付起来也费劲。

4 SNI 是干什么的

SNI全称Server Name Indication,它扩展了TLS协议。在请求SSL证书时,把Host放在SNI(明文)里面,这样nginx根据SNI发送合适的证书给客户端。这样HTTPS就和HTTP统一了。通过抓包很容易看出来Host作为SNI放到了请求中。下面是请求 https://www.sogou.com 的情况。

https如何支持虚拟主机

5 客户端和服务器的支持情况

服务器对SNI的支持一向很好,关键是客户端,除了浏览器还有各种语言的开发库,这里面IE6和XP上的IE7都不支持SNI,偏偏这两者在国内的市场份额还很大。这两年小了很多,以后会更少,基本可以忽略这批用户了。这篇文章的意义在于理解Https支持虚拟主机的渊源。


以上所述就是小编给大家介绍的《https如何支持虚拟主机》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

技术赋权

技术赋权

郑永年 / 邱道隆 / 东方出版社 / 2014-4-1 / CNY 45.00

在本书中,作者对中国互联网的历史做了一次突破性的研究,细致又全面地观察了中国互联网对于国家和社会的影响,发现互联网给中国的社会—政治变革带来了新的动力。政府权力和社会力量在以互联网为媒介的公共领域中转换。 从大量的数据梳理和事实分析中,作者得出了四重的研究结论。首先,互联网给政府和社会都增加了权力。互联网在促进政治自由化中扮演了重要的角色,使政府更加开放、透明和负责任。第二,互联网产生了大量......一起来看看 《技术赋权》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码

SHA 加密
SHA 加密

SHA 加密工具