網域買了,VPS 也有了,瀏覽器卻還是說"無法存取此網站"。缺的那一塊幾乎總是兩條 DNS 記錄,外加一個真正在正確位址上回應的 Web 伺服器。下面是完整的流程,從網域註冊商一直到能用的 HTTPS 小鎖。
開始之前:您的方案能接收網頁流量嗎?
訪客會連線伺服器的 80 和 443 埠,這需要一個有獨立公用 IP 的方案。NAT 方案只轉發您的專屬 SSH 埠,所以沒法在網域上託管網站——我們的文章獨立 IP 還是 NAT 解釋了兩者的區別。小網站在 Nano-IP 上就跑得很好。
1. 找到伺服器的位址
IPv4 和 IPv6 位址都在控制面板的伺服器頁面上。範例裡我們用文件專用位址:
- IPv4:
203.0.113.10 - IPv6:
2001:db8::10
2. 建立 DNS 記錄
登入管理網域 DNS 的地方(通常是網域註冊商),新增:
| 型別 | 名稱 | 值 | TTL |
|---|---|---|---|
| A | @ | 203.0.113.10 | 300 |
| AAAA | @ | 2001:db8::10 | 300 |
| CNAME | www | example.com. | 300 |
@ 表示主網域。300 秒這樣的短 TTL 讓改錯的成本很低;一切正常後可以調到 3600。
如果暫時不想用 IPv6,先別加 AAAA 記錄——原因見第 5 步的提醒。
3. 檢查 DNS 是否生效
別輕信註冊商的"已儲存"提示,直接問 DNS:
dig +short example.com A
dig +short example.com AAAA
dig +short www.example.com
dig +short example.com A @1.1.1.1
最後一行問的是公共解析伺服器,更接近訪客看到的結果。如果傳回的是您的 IP,DNS 就搞定了。
4. 讓伺服器回應
安裝 nginx 並開放埠:
apt update && apt install -y nginx
ufw allow 80/tcp
ufw allow 443/tcp
開啟 http://example.com——應該能看到 nginx 的歡迎頁。現在用免費憑證加上 HTTPS:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d example.com -d www.example.com
Certbot 會修改 nginx 設定、設定跳轉到 HTTPS,並自動續期憑證。如果 nginx 後面跑的是真正的應用,請按我們的帶 HTTPS 的反向代理指南來做。
5. IPv6 的坑
很多人栽在這裡。您加了 AAAA 記錄,可 nginx 只監聽 IPv4。走 IPv6 的訪客(很多行動網路)會先嚐試 IPv6 位址,然後失敗。請確認 server 塊裡兩行都有:
listen 80;
listen [::]:80;
Ubuntu 上 nginx 的預設設定已經帶了 [::],但自訂設定經常漏掉。找一台有 IPv6 的機器測試:
curl -6 -I https://example.com
常見問題
- 還是顯示舊 IP: 本機解析器快取了它。等 TTL 過期,或者像上面那樣問
@1.1.1.1。 - Certbot 超時失敗: 80 埠被擋了,或者 DNS 還沒指向這裡。再檢查一遍
ufw status和dig。 - 不帶 www 能存取,帶 www 不行: 憑證或 server 塊裡沒有包含
www。用兩個名稱重新執行 certbot。
關於反向 DNS
A 和 AAAA 記錄是從名稱到 IP。反向 DNS(PTR)方向相反,而且是在控制面板裡設定,不在註冊商那裡。只有發郵件或某個服務要檢查它時才需要——我們的 PTR 指南有詳細說明。
評論
目前還沒有評論。歡迎成為第一位。