Nginx – 同一公共 IP 上的 2 个 https 服务器

Nginx – 同一公共 IP 上的 2 个 https 服务器

我目前有几台常规 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

如果您托管同一个域的两个子域,那么获得多域或通配符证书就不会有问题。否则,证书上未列出的域将发出名称不匹配的警告。配置域时,您将对两个域使用相同的证书。

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

相关内容