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如何支持虚拟主机》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

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

产品经理修炼之道

产品经理修炼之道

费杰 / 机械工业出版社华章公司 / 2012-7-30 / 59.00元

本书由资深产品经理、中国最大的产品经理沙龙Pmcaff创始人费杰亲自执笔,微软、腾讯、百度、新浪、搜狐、奇虎、阿里云、Evernote等国内外20余家大型互联网企业资深产品经理和技术专家联袂推荐。用系统化的方法论和丰富的实战案例解读了优秀产品经理所必须修炼的产品规划能力、产品设计能力、产品执行能力,以及思考、分析和解决问题的能力和方法,旨在为互联网产品经理打造核心竞争力提供实践指导。 全书一......一起来看看 《产品经理修炼之道》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

MD5 加密
MD5 加密

MD5 加密工具