我喜歡使用nginx服務與多個域名和SSL網站:nginx的 - 設置多個服務器名稱與SSL支持
- webmail.example.com
- webmail.beispiel.de
兩者都使用相同的虛擬主機,所以我只設置server_name兩次。 問題是,我需要nginx爲每個域名提供正確的ssl證書。
這可能與一個虛擬主機或我需要設置兩個虛擬主機?
我喜歡使用nginx服務與多個域名和SSL網站:nginx的 - 設置多個服務器名稱與SSL支持
兩者都使用相同的虛擬主機,所以我只設置server_name兩次。 問題是,我需要nginx爲每個域名提供正確的ssl證書。
這可能與一個虛擬主機或我需要設置兩個虛擬主機?
編輯2014年11月:初始答案不正確,不完整;它需要刷新!這裏是。
基本上有兩種情況
- 你擁有一個通配符證書(或多域證書)
在這種情況下,你可以使用幾個虛擬主機聽相同的IP地址/ https端口,並且兩個虛擬主機使用相同的證書(偵聽所有接口),例如
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;
...
}
擔任兩個域
- 你有兩個(+)不同的證書
以上的情況下(一個IP用於所有證書)仍然可以通過服務器名稱指示與現代瀏覽器一起工作。 SNI讓客戶端(瀏覽器)在請求頭中發送想要到達的主機,允許服務器(nginx)在處理證書之前處理虛擬主機。除了每個vhost具有特定證書,crt和密鑰以外,配置與上述相同。
(nginx support SNI from 0.9.8f, check your nginx server is SNI compliant)
(also, SF talks about SNI and browser support)
否則,如果你想達到舊的瀏覽器,以及,你需要幾個虛擬主機傾聽每到一個不同的 IP地址/ 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;
...
}
原因很好explained here。
舒爾,這是一個解決方案,但不是一個很好的。改變一個虛擬主機意味着改變另一個。至少會有4個虛擬主機...... – PascalTurbo
請參閱更新。我推薦第一種解決方案。 –
請參閱http://nginx.org/en/docs/http/configuring_https_servers。html#certificate_with_several_names – barbolo