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 打上域名
ServerAlias 打上別名(可以不用設置此行。若想看ServerAlias用途及差異,請至文章底部)
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 gjlmotea.com
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "C:\www\BIZ"
ServerName bizlove.net
</VirtualHost>
(若需要永久導向,可另外加上這一行)
<VirtualHost _default_:443>
DocumentRoot "C:\www"
ServerName www.gjlmotea.com
# 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
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
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 子網域、網址前綴
SubDomain 是主域名下額外建立的子名稱
在 DNS頁面設定 SubDomain:
接著在Apache設定 httpd-vhost.conf 檔案:
ServerAlias 是伺服器設定額外支援的域名或子域名
<VirtualHost *:80>
DocumentRoot "C:\www\BIZ"
ServerName bizlove.net
ServerAlias www.bizlove.net xyz.bizlove.net
</VirtualHost>
或者使用萬用域名
<VirtualHost *:80>
DocumentRoot "C:\www\BIZ"
ServerName bizlove.net
ServerAlias *.bizlove.net # 可支援萬用域名
</VirtualHost>
如此一來www.bizlove.net、xyz.bizlove.net便可連上同一個網域
歷史:
在早期1990年代,網路主要是用來提供多種不同的服務,而「不同的服務」會使用「不同的子域名 」
www.domain.com(Web服務,網站)
ftp.domain.com(FTP檔案傳輸服務)
mail.domain.com(郵件mail伺服器)
後來,因為雲端代管的方案盛行,較少會自行架設ftp以及mail
基本上會直接讓 domain.com 直接解析到伺服器
於是裸域名(domain.com)崛起,網址也比 www.domain.com 更為簡潔、簡短
最佳實踐:
擁有 gjlmotea.com 域名之後,也要設置 www.gjlmotea.com
雖然www是早期的domain作法,只是現在通常會沿用,
讓仍以習慣 www為主的使用者不會撲了個空。
在DNS頁面會這樣設置
www.gjlmotea.com 透過CNAME指向原本域名
(當然,這種方式也可以,但是不推薦
原因:未來更動IP時,會需要更改兩筆紀錄,兩次的動作)
原因:未來更動IP時,會需要更改兩筆紀錄,兩次的動作)
然後在Apache設定 httpd-vhost.conf 檔案:
<VirtualHost *:80>
DocumentRoot "C:\www"
ServerName gjlmotea.com
ServerAlias www.gjlmotea.com
Redirect permanent / https://gjlmotea.com/ # 若有https的話 此行有助於SEO,並建議保留最後/
</VirtualHost>
接著開始弄HTTPS,在CertBot步驟申請憑證
指令範例:certbot certonly --apache -d gjlmotea.com -d www.gjlmotea.com
之後修改 httpd-vhost.conf 檔案
<VirtualHost _default_:443>
DocumentRoot "C:\www\gjlmotea"
ServerName gjlmotea.com
ServerAlias www.gjlmotea.com
SSLEngine on
SSLCertificateFile "C:\Certbot\live\gjlmotea.com\fullchain.pem"
SSLCertificateKeyFile "C:\Certbot\live\gjlmotea.com\privkey.pem"
</VirtualHost>
沒有留言:
張貼留言