web-dev-qa-db-ja.com

nginxでワイルドカード証明書を使用する複数のSSL仮想ホスト

2つのホスト名が同じドメイン名を共有しており、HTTPSで提供したい。ワイルドカードSSL証明書を取得し、2つの仮想ホスト構成を作成しました。

ホスト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;

ただし、どちらのホスト名にも同じvhostが提供されます。

14
vincent.io

Sslリスニング/構成部分から仮想ホストを分割する必要があります:

リスニングパート:

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;
}

そして今vhosts:

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;
}
17
Teftin

それは実際にマニュアルで説明されています: 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;
}

さて、あなたが多くのサイトを持っているなら、私は上記のように単一のファイルにサーバー{}部分だけを含むフォルダーにそれらのすべてを保存し、それらすべてをロードするメインファイルにインクルードディレクティブを含めることをお勧めします:

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