nginxを使用して、複数のドメイン名とSSLを使用してWebサイトにサービスを提供したいと思います。
- webmail.example.com
- webmail.beispiel.de
どちらも同じ仮想ホストを使用しているため、server_nameを2回だけ設定します。問題は、各ドメイン名に正しいssl証明書を提供するためにnginxが必要なことです。
これは1つの仮想ホストで可能ですか、それとも2つの仮想ホストを設定する必要がありますか?
nginxを使用して、複数のドメイン名とSSLを使用してWebサイトにサービスを提供したいと思います。
どちらも同じ仮想ホストを使用しているため、server_nameを2回だけ設定します。問題は、各ドメイン名に正しいssl証明書を提供するためにnginxが必要なことです。
これは1つの仮想ホストで可能ですか、それとも2つの仮想ホストを設定する必要がありますか?
2014年11月の編集:最初の答えは正しくなく、不完全です; リフレッシュが必要でした!ここにあります。
基本的に、2つのケースがあります
-ワイルドカード証明書(またはマルチドメイン証明書)を所有している
この場合、同じIPアドレス/ httpsポートをリッスンする複数のvhostを使用でき、両方のvhostが同じ証明書を使用します(すべてのインターフェイスでリッスンします)。
server {
listen 443;
server_name webmail.example.com;
root /var/www/html/docs/sslexampledata;
ssl on;
ssl_certificate /var/www/ssl/samecertif.crt;
ssl_certificate_key /var/www/ssl/samecertif.key;
...
}
server {
listen 443;
server_name webmail.beispiel.de;
root /var/www/html/docs/sslbeispieldata;
ssl on;
ssl_certificate /var/www/ssl/samecertif.crt;
ssl_certificate_key /var/www/ssl/samecertif.key;
...
}
または、特定のケースでは、両方のドメインに同じデータを提供する
server {
listen 443;
server_name webmail.example.com webmail.beispiel.de; # <== 2 domains
root /var/www/html/docs/sslbeispieldata;
ssl on;
ssl_certificate /var/www/ssl/samecertif.crt;
ssl_certificate_key /var/www/ssl/samecertif.key;
...
}
-2つ( + )の異なる証明書があります
上記のケース(すべての証明書に1つのIP)は、サーバー名表示を介して最新のブラウザーで引き続き機能します。SNIは、クライアント(ブラウザー)に到達したいホストを要求ヘッダーで送信させ、サーバー(nginx)が証明書を処理する前にvhostsを処理できるようにします。構成は上記と同じですが、各仮想ホストに特定の証明書、crt、およびキーがある点が異なります。
(nginxは0.9.8fからSNIをサポートします。nginxサーバーがSNIに準拠していることを確認してください)
(また、SFはSNIとブラウザーのサポートについて話します)
それ以外の場合、古いブラウザにもアクセスしたい場合は、それぞれが異なるIPアドレス/httpsポートをリッスンする複数のvhostが必要です。
server {
listen 1.2.3.4:443; # <== IP 1.2.3.4
server_name webmail.example.com;
root /var/www/html/docs/sslexampledata;
ssl on;
ssl_certificate /var/www/ssl/certifIP1example.crt;
ssl_certificate_key /var/www/ssl/certifIP1example.key;
...
}
server {
listen 101.102.103:443; <== different IP
server_name webmail.beispiel.de;
root /var/www/html/docs/sslbeispieldata;
ssl on;
ssl_certificate /var/www/ssl/certifIP2beispiel.crt;
ssl_certificate_key /var/www/ssl/certifIP2beispiel.key;
...
}
その理由はここでよく説明されています。