我有两个主机名共享相同的域名,我想通过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/*;