在nginx中使用通配符证书的多个SSL虚拟主机

我有两个主机名共享相同的域名,我想通过HTTPs服务。 我有一个通配符SSL证书,并创build了两个vhostconfiguration:

主持人A.

listen 127.0.0.1:443 ssl; server_name a.example.com; root /data/httpd/a.example.com; ssl_certificate /etc/ssl/wildcard.cer; ssl_certificate_key /etc/ssl/wildcard.key; 

主持人B

 listen 127.0.0.1:443 ssl; server_name b.example.com; root /data/httpd/b.example.com; ssl_certificate /etc/ssl/wildcard.cer; ssl_certificate_key /etc/ssl/wildcard.key; 

不过,我得到的是同一个虚拟主机服务的主机名。

您需要从ssl监听/configuration部分分割虚拟主机:

听力部分:

 server { listen 127.0.0.1:443 default_server ssl; server_name _; ssl_certificate /etc/ssl/wildcard.cer; ssl_certificate_key /etc/ssl/wildcard.key; } 

而现在的鬼魂:

 server { listen 127.0.0.1:443; server_name a.example.com; root /data/httpd/a.example.com; } server { listen 127.0.0.1:443; server_name b.example.com; root /data/httpd/b.example.com; } 

实际上在手册中进行了解释: http : //nginx.org/en/docs/http/configuring_https_servers.html#certificate_with_several_names

 ssl_certificate /etc/ssl/wildcard.cer; ssl_certificate_key /etc/ssl/wildcard.key; server { listen 443 ssl; server_name a.example.com; root /data/httpd/a.example.com; } server { listen 443 ssl; server_name b.example.com; root /data/httpd/b.example.com; } 

现在,如果你有很多网站,我build议把它们全部放在一个文件夹中,只用上面的单个文件中的server {}部分,在主文件中包含include指令来加载它们:

 ssl_certificate /etc/ssl/wildcard.cer; ssl_certificate_key /etc/ssl/wildcard.key; include /etc/nginx/conf.d/subfolder/*;