我在 Digital Ocean droplet(使用 nginx)上设置了两个域。我已经在其中一个(domain1)中安装了一个 SSL 证书,并且那个证书一切正常。第二个域 (domain2) 不需要 SSL 证书,但如果我尝试访问 https://domain2正在向我显示 domain1 的内容并给我一个证书错误(此页面不安全)。
我理解证书错误,但我不想在 https://domain2 中显示 domain1 的内容
是配置问题吗?
最佳答案
nginx
始终有一个默认服务器,当server_name
不匹配时使用该服务器。如果您只有一个带有 listen 443
的服务器 block ,那么它就是所有 https
连接的隐式默认服务器,而不管服务器名称如何。
您需要为 https
连接设置一个显式的catch-all 服务器,或者将listen 443 ssl
添加到现有的server
block 充当catch-all 服务器。
您可以重复使用相同的证书文件,如果有人尝试使用它,您将继续收到证书错误,但至少您的其他域不会暴露。
例如:
ssl_certificate /path/to/crt;
ssl_certificate_key /path/to/key;
server {
listen 443 ssl;
server_name domain1;
...
}
server {
listen 443 ssl default_server;
return 403;
}
参见 this document和 this document了解更多。
关于ssl - 没有 ssl 证书的域重定向到不同的 ssl 域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42481729/