[2k10配置]Nginx 单IP下 配置多个server https 的问题
作者:佚名 来源:哪吒游戏网 2019-11-03 01:11:34
[2k10配置]Nginx 单IP下 配置多个server https 的问题,哪吒游戏网给大家带来详细的[2k10配置]Nginx 单IP下 配置多个server https 的问题介绍,大家可以阅读一下,希望这篇[2k10配置]Nginx 单IP下 配置多个server https 的问题可以给你带来参考价值。
同样是后端开发,年薪50万和年薪20万的差距在哪里>>> 
我们的负载均衡架构是这样的:
请求 —> 网络 —> LVS集群 —> Nginx 集群 —> APP
LVS使用FULLNAT模式,每台Nginx 机器只有一个IP(内网IP),LVS也是把流量转到这个IP。如果Nginx想对多个域名使用https,比如两个域名 wandoujia.com 和 wandoulabs.com ,是可能有问题的。
看下面的配置(两个server写在不同文件中,用 include * 加载):
server {
listen 80;
listen 443 ssl;
server_name test.wandoujia.com;
ssl_certificate wandoujia.crt;
ssl_certificate_key wandoujia.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
...
}
server {
listen 80;
listen 443 ssl;
server_name test.wandoulabs.com;
ssl_certificate wandoulabs.crt;
ssl_certificate_key wandoulabs.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
...
}
这样你访问 或者 ,都可能报证书有问题,这是为什么。
事实上,SSL运行在TCP之上(SSL/TLS协议),ssl通过四次握手 和服务器(这里是Nginx,LVS纯转发,可忽略)的IP + PORT(443)建立ssl连接,建立连接之后浏览器才会发送HTTP请求。所以在Nginx收到HTTP请求之后才知道Host,才知道转到哪个server 去处理,所以在SSL连接建立的时候Nginx是不知道用哪个 Server 的SSL配置的,在这种情况下,Nginx会使用它加载到的第一个SSL配置(需验证)。当然如果你在listen 443的后面加上 default_server,Nginx就会使用此SSL配置,即:
listen 443 default_server ssl;
那么对于单域名的https,我更喜欢把SSL配置写在http配置里,在server只需要加上 listen 443 ssl;,类似:
http {
...
ssl_certificate wandoujia.crt;
ssl_certificate_key wandoujia.key;
#ssl_certificate wandoulabs.crt;
#ssl_certificate_key wandoulabs.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
...
}
server {
listen 80;
listen 443 ssl;
server_name test.wandoujia.com;
...
}
#server {
# listen 80;
# listen 443 ssl;
# server_name test.wandoulabs.com;
# ...
#}
那么怎么才能实现多域名的 https 呢,是有办法的,叫做 TLS Server Name Indication extension(SNI, RFC 6066),它允许浏览器在SSL握手的时候发送请求的server name,也就是 Host,这样 Nginx 就能找到对应server 的SSL配置。
但是要浏览器支持SNI 才可以,支持SNI的浏览器有:
Opera 8.0;
MSIE 7.0 (but only on Windows Vista or higher);
Firefox 2.0 and other browsers using Mozilla Platform rv:1.8.1;
Safari 3.2.1 (Windows version supports SNI on Vista or higher);
and Chrome (Windows version supports SNI on Vista or higher, too).
同样,在服务器端 openssl 要支持SNI2k10配置,编译的时候加上–enable-tlsext 即可,不过从 0.9.8j 版本开始编译的时候默认会加。openssl 支持了SNI,Nginx 才可以work,确认是否OK:
$ ./nginx -V
...
TLS SNI support enabled
...
所以,如果想要实现多域名https,要确认你的Nginx 支持 TLS SNI support,然后在server 单独配置SSL2k10配置, 但是要注意,某些浏览器会有问题,而且因为Nginx加载server 的顺序不同(特别是每个server在同一目录的不同文件中,然后在nginx.conf主配置文件中用 include * 包含),可能会出现奇怪的问题,我是遇到过的。
总结:以上内容就是针对[2k10配置]Nginx 单IP下 配置多个server https 的问题详细阐释,如果您觉得有更好的建议可以提供给哪吒游戏网小编,[2k10配置]Nginx 单IP下 配置多个server https 的问题部分内容转载自互联网,有帮助可以收藏一下。
上一篇: [2k10配置]比直播还爽!NBA 2K10低端卡轻松全特效
下一篇: [毁灭战士3邪恶复苏]毁灭战士3:邪恶复苏完整硬盘版玩法攻略介绍
- 1 魔兽世界 考古(魔兽世界考古毁一生?这些装备幻化和坐骑值得你去玩考古)
- 2 普罗霍洛夫(卢布危机下俄土豪大甩卖 卖完豪宅卖球队)
- 3 龙之谷手柄(《龙之谷手游》手柄怎么连接 柄连接教学攻略)
- 4 普罗霍洛夫(俄罗斯土豪准备20亿抛售篮网! 最烂老板是怎样炼成的?)
- 5 天联网(天联网信息科技有限公司怎么样?)
- 6 附魔大师(魔兽世界怀旧服附魔大师在哪 附魔大师位置分享介绍)
- 7 wow烹饪食谱(魔兽世界怀旧服烹饪极品食谱)
- 8 陶谦让徐州(陶谦三让徐州,世界上真有这样的好人吗?)
- 9 lol神圣之剑(LOL如果神圣之剑回归,谁最受益?第1:只要不瞎都能上钻石!)
- 10 陶谦让徐州(陶谦三让徐州的原因是什么?)

机械战警
坦克射击
梦道满V版
火箭精英3d免费版
太古灵诀
小小帝国无敌破解版
厉害了我的娃
乐高无限
侠影双剑九游版