2013-01-21 97 views
26

我喜歡使用nginx服務與多個域名和SSL網站:nginx的 - 設置多個服務器名稱與SSL支持

  • webmail.example.com
  • webmail.beispiel.de

兩者都使用相同的虛擬主機,所以我只設置server_name兩次。 問題是,我需要nginx爲每個域名提供正確的ssl證書。

這可能與一個虛擬主機或我需要設置兩個虛擬主機?

回答

25

編輯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

+0

舒爾,這是一個解決方案,但不是一個很好的。改變一個虛擬主機意味着改變另一個。至少會有4個虛擬主機...... – PascalTurbo

+0

請參閱更新。我推薦第一種解決方案。 –

+0

請參閱http://nginx.org/en/docs/http/configuring_https_servers。html#certificate_with_several_names – barbolo

相關問題