Nginx的2个HTTPS服务器在同一个公共IP

我目前有几个普通的http服务器和一个https服务器。 我想添加具有相同的公共IP的另一个HTTPS服务器。

我有类似的东西

server { listen 443 ssl; server_name sub1.example.com; ssl_certificate sub1.example.com.crt; ... } server { listen 443 ssl; server_name sub2.example.org; ssl_certificate sub2.example.org.crt; ... } 

我遇到的问题是与IE8。 我收到sub1的证书,而不是sub2的。 其他浏览器不存在这个问题。 在阅读http://nginx.org/en/docs/http/configuring_https_servers.html#name_based_https_servers我看到我需要做这样的事情

 server { listen 192.168.1.1:443 ssl; server_name sub1.example.com; ssl_certificate sub1.example.com.crt; ... } server { listen 192.168.1.2:443 ssl; server_name sub2.example.org; ssl_certificate sub2.example.org.crt; ... } 

我不确定如何实际设置或分配IP。 我试着把这些IP从上面放到我的nginx conf中,但是没有成功。 重新启动nginx后,我的网站都没有工作。 当我尝试加载网站时,我收到一个错误,说它无法连接到服务器。

我有CentOS 6.5和Nginx 1.6

如果你确实正在运行Windows XP,这将无法正常工作。 需要Vista或更高。

我也会仔细检查你是否启用了SNI,从你提到的同一个链接。

 nginx -V 

如果您使用兼容SNI的浏览器,则您发布的第一个configuration通常应该可以正常工作

如果您托pipe的是同一个域的两个子域,那么如果您获得多域或通配符证书,则没有任何问题。 否则,未在证书上列出的域会发出名称不匹配的警告。 configuration域时,您可以为两个域使用相同的证书。

某些客户端和服务器在提交证书前支持协商域名。 这允许使用两个不同的证书。