【XAMPP】【Apache】將多個網域綁定到一個IP (HTTP、SSL)

Two Domain On One IP

我在Google Domain上註冊了兩個Domain後,想都綁同一個實體IP(Public IP),並自動導向到不同網頁(網站)。





首先從你買域名的地方上做好設置,將兩個頂級域Domain(TLD) 透過類型A 都指向該IP

將Domain綁定到該IP位置,再開始做以下步驟


環境


伺服器是用XAMPP的Apache


80 port http 虛擬主機設定


先開啟  httpd.conf  (預設路徑在 C:\xampp\apache\conf)
確保這一行沒有被#註解掉

Include conf/extra/httpd-vhosts.conf



有這行代表他會去讀 httpd-vhosts.conf 的設定

接著修改 httpd-vhost.conf 檔案 (預設在 C:\xampp\apache\conf\extra)


直接在文件最底部 加上VirtualHost區塊

設定大概像這樣子
DocumentRoot 指向 網站根目錄位置
ServerName 打上頂級域名

NameVirtualHost *:80
<VirtualHost *:80>
    DocumentRoot "C:\www\BIZ"
    ServerName bizlove.net
    ServerAlias bizlove.net
</VirtualHost>


<VirtualHost *:80>
    DocumentRoot "C:\www"
    ServerName gjlmotea.com
    ServerAlias gjlmotea.com
</VirtualHost>

接著重啟Apache服務

http連線的設定就完成拉



在測試的時候因為快取的關係,多次以為是自己沒設定好,
後來用別台電腦開發現結果是OK的,建議使用網頁無痕模式開啟測比較準。



443 port https 虛擬主機設定

http弄好之後,再來要設定https

回到 httpd.conf  (預設路徑在 C:\xampp\apache\conf)
確保這一行沒有被註解掉



修改 httpd-ssl.conf 檔案 (預設路徑在 C:\xampp\apache\conf\extra)

使整份文件結構看起來大概像這樣:

<VirtualHost _default_:443>
DocumentRoot "C:\www"
ServerName www.gjlmotea.com:443
</VirtualHost>                                  

<VirtualHost *:443>
    DocumentRoot "C:\www\BIZ"
    ServerName bizlove.net:443
</VirtualHost>



(若需要永久導向,可另外加上這一行)
<VirtualHost _default_:443>
DocumentRoot "C:\www"
ServerName www.gjlmotea.com:443

# http to https 重導向
Redirect permanent / https://www.gjlmotea.com/
</VirtualHost>          

但連上也只會出現不安全網頁,
因為上面這是沒有SSL憑證的狀態



照著CertBot步驟申請憑證,有了SSL的證書後
最終整份 httpd-ssl.conf 檔案設定看起來會是這樣

<VirtualHost _default_:443>
    DocumentRoot "C:\www"
    ServerName www.gjlmotea.com:443
    SSLEngine on
    SSLCertificateFile "C:\Certbot\live\gjlmotea.com\fullchain.pem"
    SSLCertificateKeyFile "C:\Certbot\live\gjlmotea.com\privkey.pem"
    SSLCertificateChainFile "C:\Certbot\live\gjlmotea.com\chain.pem"
</VirtualHost>                                  

<VirtualHost *:443>
    DocumentRoot "C:\www\BIZ"
    ServerName bizlove.net:443
    ServerAlias bizlove.net
    SSLEngine on
    SSLCertificateFile "C:\Certbot\live\bizlove.net\fullchain.pem"
    SSLCertificateKeyFile "C:\Certbot\live\bizlove.net\privkey.pem"
    SSLCertificateChainFile "C:\Certbot\live\bizlove.net\chain.pem"
</VirtualHost>






SubDomain 子網域、網址前綴

原本想要在設定檔中設置 multiple ServerName,但發現 ServerAlias 可以加上萬用匹配字元 *

<VirtualHost *:80>
    DocumentRoot "C:\www\BIZ"
    ServerName bizlove.net
    ServerAlias *.bizlove.net
</VirtualHost>

接著DNS也設定


如此一來www.bizlove.net、xyz.bizlove.net便可連上同一個網域

沒有留言:

張貼留言