如何設定單一 Apache2 配置來託管多個 HTTPS 站點,每個站點都有自己的 IP 位址?單一 IP 位址上還會有多個 HTTP 網站。
我不想使用伺服器名稱指示 (SNI)如上所述這裡,我只關心重要的頂級 Apache 指令。也就是說,我只需要知道我的配置應該是什麼樣子的骨架。
基本設定如下所示:
Hosted on 1.1.1.1:80 (HTTP)
- example.com
- example.net
- example.org
Hosted on 2.2.2.2:443 (HTTPS)
- secure.com
Hosted on 3.3.3.3:443 (HTTPS)
- secure.net
Hosted on 4.4.4.4:443 (HTTPS)
- secure.org
這是迄今為止我擁有的重要配置指令,這是我最接近工作迭代的配置指令,但仍然沒有骰子。我知道我已經很接近了,只是需要朝著正確的方向一點推動。
Listen 1.1.1.1:80
Listen 2.2.2.2:443
Listen 3.3.3.3:443
Listen 4.4.4.4:443
NameVirtualHost 1.1.1.1:80
NameVirtualHost 2.2.2.2:443
NameVirtualHost 3.3.3.3:443
NameVirtualHost 4.4.4.4:443
# HTTP VIRTUAL HOSTS:
<VirtualHost 1.1.1.1:80>
ServerName example.com
DocumentRoot /home/foo/example.com
</VirtualHost>
<VirtualHost 1.1.1.1:80>
ServerName example.net
DocumentRoot /home/foo/example.net
</VirtualHost>
<VirtualHost 1.1.1.1:80>
ServerName example.org
DocumentRoot /home/foo/example.org
</VirtualHost>
# HTTPS VIRTUAL HOSTS:
<VirtualHost 2.2.2.2:443>
ServerName secure.com
DocumentRoot /home/foo/secure.com
SSLEngine on
SSLCertificateFile /home/foo/ssl/secure.com.crt
SSLCertificateKeyFile /home/foo/ssl/secure.com.key
SSLCACertificateFile /home/foo/ssl/ca.txt
</VirtualHost>
<VirtualHost 3.3.3.3:443>
ServerName secure.net
DocumentRoot /home/foo/secure.net
SSLEngine on
SSLCertificateFile /home/foo/ssl/secure.net.crt
SSLCertificateKeyFile /home/foo/ssl/secure.net.key
SSLCACertificateFile /home/foo/ssl/ca.txt
</VirtualHost>
<VirtualHost 4.4.4.4:443>
ServerName secure.org
DocumentRoot /home/foo/secure.org
SSLEngine on
SSLCertificateFile /home/foo/ssl/secure.org.crt
SSLCertificateKeyFile /home/foo/ssl/secure.org.key
SSLCACertificateFile /home/foo/ssl/ca.txt
</VirtualHost>
就其價值而言,我更喜歡讓每個 SSL 站點都有自己的 IP,而不是將其中一個站點包含在主 VHOST IP 上。任何顯示標準設定的連結都將受到歡迎!
答案1
重新啟動 Apache,不要重新載入。重新載入時不會載入新設定的 SSL 憑證。
刪除NameVirtualHost ...:443
指令;只有當你在做 SNI 時你才需要它們。
是的,保留該NameVirtualHost 1.1.1.1:80
指令,您的連接埠 80 主機需要該指令才能根據主機標頭路由請求。