Nginxを使用して、複数のドメイン名とSSLを持つWebサイトを提供したいと思います。
両方とも同じ仮想ホストを使用するため、server_nameを2回だけ設定します。問題は、各ドメイン名に対して正しいSSL証明書を提供するためにnginxが必要なことです。
これは1つの仮想ホストで可能ですか、それとも2つの仮想ホストを設定する必要がありますか?
2014年11月編集:最初の答えは正しくなく、不完全です。更新が必要でした!ここにあります。
基本的に、2つのケースがあります
-ワイルドカード証明書を所有しています(またはマルチドメイン証明書)
この場合、同じIPアドレス/ httpsポートをリッスンする複数のvhostsを使用でき、両方のvhostsは同じ証明書を使用します(すべてのインターフェースでリスニング)、例えば.
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を処理できるようにします。構成は上記と同じですが、各vhostには特定の証明書、crtおよびがあります。キー。
( nginxは0.9.8fからSNIをサポートし、nginxサーバーがSNIに準拠していることを確認します )
( また、SFはSNIとブラウザのサポートについて話します )
それ以外の場合、古いブラウザにもアクセスするには、vhostsがそれぞれdifferentIPアドレス/ httpsポートをリッスンする必要があります、例えば.
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;
...
}
その理由は ここで説明 です。