我在Digital Ocean Droplet上设置了两个域(使用nginx)。我在其中一个(domain1)中安装了SSL证书,一切都很好。第二个域(domain2)不需要SSL证书,但如果我尝试访问https://domain2,则会向我显示domain1的内容并给我一个证书错误(此页面不安全)。
我理解证书错误,但我不希望域名1的内容显示在https://domain2
这是配置问题吗?
答案 0 :(得分:0)
nginx
始终有一个默认服务器,即server_name
不匹配时使用的服务器。如果您只有一个带有listen 443
的服务器块,那么无论服务器名称如何,这都是所有https
连接的隐式默认服务器。
您需要为https
个连接设置明确的 catch-all 服务器,或者将listen 443 ssl
添加到现有的server
块中以充当 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。