在 NAT VPS 上部署 HTTPS 網站:Nginx + acme.sh 實戰
发布于 2026/10/8 04:15:08 · 更新于 2026/10/8 04:15:08
在 NAT VPS 上跑 HTTPS 網站,關鍵是兩件事:把端口映射到機內 80 / 443,以及用對的憑證簽發方式。
第 1 步:確認端口映射
- 在訂單詳情頁,把一個可映射的公網端口指向機內 80(HTTP)或 443(HTTPS)。
- 對外訪問形式是 http://公網IP:你的端口,而不是預設的 80 / 443。
- 這一步不做,外網永遠打不開。
第 2 步:簽憑證請用 DNS-01
- Let's Encrypt 的 HTTP-01 驗證需要訪問 80 端口;NAT 環境的公網端口由系統分配,通常拿不到 80。
- 因此建議用 DNS-01:用 acme.sh 的 dns_cf(Cloudflare)等插件,透過 DNS TXT 記錄完成驗證。
- DNS-01 的另一個好處是支援泛域名(例如 *.example.com)。
第 3 步:Nginx 反向代理
- Nginx 監聽機內 80(也就是你映射出去的那個公網端口對應的內部端口)。
- 由 Nginx 終結 TLS,再反向代理到你的應用(例如 127.0.0.1:3000)。
- 憑證指向 acme.sh 產出的檔案;續期後 reload Nginx。
第 4 步:DDNS(可選)
- 出口 IP 每天輪換,若用域名訪問,請用 DDNS 讓 A 記錄跟隨當前出口 IP。
- 只用 IP:端口 訪問則不需要。
常見坑
- 憑證簽好了但瀏覽器仍報錯:確認訪問的是 https:// 且端口正確。
- 續期失敗:DNS-01 的 API Token 權限不足或已過期。
- 完全打不開:先確認映射存在、Nginx 在跑、機內防火牆放行。
