我有一个运行着两个 IP 地址的 nginx 服务器,比如1.2.3.4
和4.3.2.1
。此外,还有两个通配符 SSL 证书,分别用于*.example.net
(即wc1
,指向1.2.3.4
)和*.sub.example.net
(即wc2
,指向4.3.2.1
)。
这nginx 文档提到您可以在实例之间共享通配符证书,server
如下所示:
ssl_certificate wc1.crt;
ssl_certificate_key wc1.key;
server {
listen 1.2.3.4:443;
server_name www.example.net;
ssl on;
...
}
server {
listen 1.2.3.4:443;
server_name test.example.net;
ssl on;
...
}
但是,我想知道同样的构造是否也可以用于第二个通配符证书。两个域名都有大约 500 个子域名。
ssl_certificate
由于现在该构造是全球性的,它们是否不会混淆呢?
答案1
尝试这个:
server {
listen 1.2.3.4:443 default_server ssl;
server_name _;
ssl_certificate wc1.crt;
ssl_certificate_key wc1.key;
}
server {
listen 4.3.2.1:443 default_server ssl;
server_name _;
ssl_certificate wc2.crt;
ssl_certificate_key wc2.key;
}
server {
listen 1.2.3.4:443 ssl;
server_name www.example.net;
...
}
server {
listen 1.2.3.4:443 ssl;
server_name test.example.net;
...
}
server {
listen 4.3.2.1:443 ssl;
server_name www.sub.example.net;
...
}
server {
listen 4.3.2.1:443 ssl;
server_name test.sub.example.net;
...
}
我可以肯定,这种方法肯定适用于一个通配符证书,所以希望它可以适用于两个或更多通配符证书。
答案2
这ssl_certificate
指令既可以在块级别使用http
(在这种情况下它适用于所有server
块),也可以server
在级别使用(在这种情况下它仅适用于该特定块)。如果您想使用不同的证书,只需在相应的块内server
定义即可。ssl_certificate
server