iT邦幫忙

2026 iThome 鐵人賽

DAY 20
0
Modern Web

前端來點 AWS 技能樹!系列 第 20 篇

Day20 - 網域與 DNS 設定:把名字接上 EC2

  • 分享至 

  • xImage
  •  

昨天知道瀏覽器怎麼透過 DNS 找到 IP 位址,也查過 www.google.com 的位址記錄(Address Record,A 記錄)。不過,那是別人的 Domain Name。
如果想讓自己的網站也有名字,要去哪裡取得?拿到名字後,又要在哪裡填入 EC2 的EIP呢?
今天先來認識**網域註冊(Domain Registration)**與 DNS 代管(DNS Hosting),比較 Cloudflare 和 AWS 的 Route 53,再用 Cloudflare 示範怎麼把名稱接上 EC2 ㄅ!

取得名字、管理記錄、執行網站

我們平常說的「買網域」,通常是向**網域註冊商(Registrar)**申請一個還沒被註冊的名稱,並依註冊年限付費、續約。
取得名字後,還要有地方管理它的 DNS 記錄,這就是所謂的 DNS 代管(DNS Hosting)。至於網站程式,則繼續在原本的 EC2 上執行。

角色 負責什麼
Registrar 辦理 Domain Registration、續約與名稱伺服器(Nameserver)設定
DNS Hosting 管理 DNS 記錄,由權威名稱伺服器(Authoritative Nameserver)回答查詢
AWS EC2 透過 Docker Container 執行 Next.js 網站,回應網站請求

Domain Registration 與 DNS 代管可以由同一家業者提供,也可以分開由自己選擇喔!

Cloudflare 與 AWS Route 53 的差異

之前我們一直在 AWS 上操作,而 AWS 也有提供 Domain Registration 與 DNS Hosting 的功能也就是 Amazon Route 53。當然還有另一個選擇也就是我們平常很常看到擋爬蟲的 Cloudflare,Cloudflare 除了 DNS Hosting 之外,也有提供像是**網站代理(Web Proxy)**等功能。
而我們先比較這兩者服務的差異:

比較項目 Cloudflare AWS Route 53
Domain Registration 可透過 Cloudflare 的 Cloudflare Registrar 註冊,但 Domain 要另付費 可註冊 Domain,Domain 另付費
DNS Hosting 費用 免費方案(Free)中就有包含 DNS Hosting 依 DNS 託管區域(Hosted Zone)與查詢量等項目計費
Web Proxy 可選僅 DNS(DNS only),或啟用代理(Proxied)讓網站請求經過 Cloudflare DNS 服務本身不代理網頁請求
  • 這裡的「DNS Hosted Zone」,就是存放一組 DNS 記錄的地方。DNS 代管免費,不代表註冊網域也免費,這兩筆費用要分開看。

而我自己之前在選擇服務時,先比較了兩者的價格。另外,當時我使用的是 AWS 免費帳戶方案(Free plan),無法透過 Route 53 購買網域。所以再考量這兩者因素後,最後決定使用 Cloudflare。
如果想方便管理、使用 AWS 全家桶,也可以選擇 Route 53;若要透過它購買 Domain,記得先確認帳戶方案是否支援喔!

好了,接著我們就沿用之前 Cloudflare 示範設定,網站繼續放在 AWS,由 Cloudflare 管理 DNS。
還有今天會使用 DNS only ,瀏覽器直接連到 EC2。等一下新增記錄時,再來看這個選項怎麼設定。
另外,Cloudflare 的 1.1.1.1 公用 DNS 解析服務(Public DNS Resolver),是幫使用者找答案;今天要用的 DNS 代管服務,則是讓我們管理答案。來看網站的人可以繼續使用原本的解析器(Resolver)。

先準備自己的網域

這次以新註冊、尚未承載其他服務的練習網域為例。可以在 Cloudflare 的**註冊網域(Register domains)**搜尋想要的名稱,確認可註冊、註冊與續約費用後,再依畫面完成付款、聯絡資料及信箱驗證。
https://ithelp.ithome.com.tw/upload/images/20261004/20179793vW6FedQLP1.png

今天會先用 HTTP 驗證,所以挑選網域時,要記得留意像 .dev 和 .app 這類要求是 HTTPS 的後綴。如果已經使用這類網域,可以先完成 DNS 設定與查詢,等下一篇設定 HTTPS 後,再用瀏覽器驗證網站。
透過 Cloudflare Registrar 註冊的 Domain,會自動使用 Cloudflare 的權威 DNS。 使用它作為註冊商期間,不能直接改成其他業者的名稱伺服器,選擇前要先知道這個限制。
如果是已在其他註冊商取得練習 Domain,就到 Cloudflare 的網域(Domains)→ 加入網域(Onboard a domain),輸入自己的 Domain name,再選擇方案。稍後還要回註冊商更換名稱伺服器。
以下仍用 example.com 和 203.0.113.10 示意,操作時都要換成自己的 Domain 與 EIP。
開始前,先確認 EIP 仍關聯到這台 EC2,並能用原本的 HTTP 網址開啟網站,再來加入 DNS 設定。

用 A Record 填入 EIP

進入 Cloudflare 中自己的 Domain,找到 DNS → 記錄(Records),按新增記錄(Add record)。
https://ithelp.ithome.com.tw/upload/images/20261004/20179793iSSjpXmkuE.png
若列表已有註冊商停放頁用的同名 A Record、IPv6 位址記錄(AAAA Record),或正規名稱記錄(Canonical Name Record,CNAME),先移除這些舊目標,再依下面設定建立。這裡以尚未承載其他服務的練習 Domain 為前提;CNAME 的用途會在後面設定 www 時說明。
https://ithelp.ithome.com.tw/upload/images/20261004/20179793QPp26ao9o4.png
昨天提到,A Record 是名稱和**第 4 版網際網路協定(Internet Protocol version 4,IPv4)位址的對應。這次要設定整個 example.com,可以在名稱(Name)**欄位填 @,它在這個介面代表目前的網域本身。

欄位 這次填什麼
類型(Type) A
名稱(Name) @
IPv4 位址(IPv4 address) 自己的 EIP,例如 203.0.113.10
代理狀態(Proxy status) 僅 DNS(DNS only,灰雲)
存活時間(Time to Live,TTL) 先保留自動(Auto)

確認後按儲存(Save)。IP 欄位只填數字位址,不用加上 http://、連接埠(Port)或路徑。

  • 這裡的 Proxy status 先選 DNS only,是讓 Cloudflare 回覆我們填入的 EIP,瀏覽器再直接連到 EC2。如果選**啟用代理(Proxied,橘雲)**的話,網站請求就會先經過 Cloudflare,而 DNS 通常也會回覆 Cloudflare 的 IP。所以這次先練習直接連到 EC2 的流程就好了。

如果也想使用 www 呢?

再新增一筆正規名稱記錄(Canonical Name Record,CNAME),把 www.example.com 設成 example.com 的別名。查詢時,就能沿著目標名稱繼續找位址:

欄位 這次填什麼
類型(Type) CNAME
名稱(Name) www
目標(Target) 自己的網域,例如 example.com
代理狀態(Proxy status) 僅 DNS(DNS only,灰雲)
存活時間(TTL) 自動(Auto)
  • CNAME 填的是名稱,不是 IP。它也不會讓網址列自動從 www.example.com 跳成 example.com;如果需要跳轉,要另外設定網站的重新導向(Redirect),網站本身也要能處理這兩個名稱。

存活時間 TTL

剛才兩筆 Records 都有一個選項叫存活時間(Time to Live,TTL)。它以秒為單位,告訴解析器這份答案可以**快取(Cache)**多久;這次先使用 Cloudflare 的自動設定即可。
假設一筆 Record 的 TTL 是 300,就是 5 分鐘。而解析器剛取得答案後,通常可以在這段時間內重複使用。即使我們中途修改 IP,它仍可能先回覆還沒到期的舊答案。
所以改完 DNS,有人已經查到新 IP,有人還在使用舊 IP,不一定是設定錯誤。現在才把 TTL 調低,也不會立刻縮短別人已保存的舊 cache。

讓查詢找到 Cloudflare

Record 準備好後,還要讓昨天介紹的查詢流程,找到 Cloudflare 的權威名稱伺服器。
這就和名稱伺服器記錄(Name Server Record,NS)有關:它記的是負責這個 Domain DNS 資料的名稱伺服器。透過 Cloudflare Registrar 新註冊的 Domain 已使用 Cloudflare DNS,不用再手動更換名稱伺服器。
若 Domain 是在其他註冊商取得的,而且已啟用
網域名稱系統安全性延伸(Domain Name System Security Extensions,DNSSEC)
,也就是驗證 DNS 資料的安全機制,更換前要先依 Cloudflare 的遷移文件處理。
需要更換時,從 Cloudflare 的 Domain 總覽(Overview)或加入 Domain 的引導畫面,找到指派給自己的名稱伺服器,再填回註冊商的名稱伺服器(Nameservers)設定,取代原本的那一組。
這裡填的是 Cloudflare 提供的伺服器名稱,不是 EC2 的 IP;也不是在原本的 DNS Records 列表自行新增幾筆 NS 就完成。 註冊商會把這組資訊交給上層,讓解析器知道接下來該問誰。
完成後回到 Cloudflare,等待 Domain 狀態變成
已啟用(Active)
。更新名稱伺服器也需要時間,不是儲存後就會立即完成。
https://ithelp.ithome.com.tw/upload/images/20261004/20179793LPSuknjkg3.png

用自己的名稱開啟網站

我們就直接沿用昨天的查詢方式,這次查自己的網域。下面的 example.com 要換成實際註冊的名稱:

dig example.com A +short

Windows 的話則是使用 nslookup -type=A example.com。這次採用僅 DNS 模式,查出的 IPv4 應該和 EC2 的 EIP 相同。
接著確認 EC2 和容器已啟動,在瀏覽器用 http:// 加上自己的網域開啟網站。
如果 IP 正確但網站打不開,就要回頭檢查原本的 HTTP 連線,以及**安全群組(Security Group)裡的我的 IP(My IP)**來源設定;換成 Domain 後,EC2 仍然要允許目前的來源連線。
當自己的 Domain 能開啟原本的 Next.js 頁面,就完成今天的設定了。如果也設定了 www,就再確認一下 http://www.自己的網域 同樣要能使用喔!

下一篇再接著處理 HTTPS,讓網站連線加上加密。

參考資料


上一篇
Day19 - 網域與 DNS:讓網站有個好記的名字
系列文
前端來點 AWS 技能樹! 共 20 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言