我目前有几台常规 http 服务器和 1 台 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
答案1
如果你确实在运行 Windows XP,那么这将不起作用。需要 Vista 或更高版本。
我还会从您提到的同一链接仔细检查 SNI 是否已启用。
nginx -V
如果您使用兼容 SNI 的浏览器,您发布的第一个配置通常应该可以工作。
答案2
如果您托管同一个域的两个子域,那么获得多域或通配符证书就不会有问题。否则,证书上未列出的域将发出名称不匹配的警告。配置域时,您将对两个域使用相同的证书。
一些客户端和服务器支持在出示证书之前协商域名。这允许使用两个不同的证书。