当时域名申请下来之后,整个上线与接入流程分为四个标准阶段:DNS 解析指向、服务器端端口与防火墙放行、NPM 反向代理配置、以及 申请与强制 HTTPS 证书。

以下是完整的实操还原:

第一阶段:域名 DNS 解析(把名字绑到公网 IP)

  1. 登录域名注册商的 DNS 解析控制台(如阿里云云解析 DNS、DNSPod 等)。

  2. 进入该域名的解析设置页面,添加解析记录:

    • 记录类型:选择 A 记录。

    • 主机记录:

      • 如果访问主域名,填 @。

      • 如果使用二级域名(如博客),填 blog 或自定义前缀。

    • 记录值:填写云服务器的 公网 IP 地址。

    • TTL:保持默认的 10 分钟。

  3. 验证步骤: 在本地电脑终端(Terminal 或 CMD)中执行:

    Bash

    ping yourdomain.com
    

    验证标准:返回的 IP 地址正是你的云服务器公网 IP,且有响应,说明解析已全球生效。

第二阶段:云服务器安全组与端口确认

NPM 负责统一接收入口流量,必须保证宿主机的标准 Web 端口对外开放:

  1. 登录云服务器厂商管理控制台,找到 ECS 实例的 安全组(Security Groups)。

  2. 在 入方向规则 中确认已放行以下端口:

    • 80 端口(HTTP):协议 TCP,源地址 0.0.0.0/0(Let's Encrypt 证书验证及 HTTP 访问必需)。

    • 443 端口(HTTPS):协议 TCP,源地址 0.0.0.0/0(加密访问必需)。

    • 81 端口:NPM 后台管理面板端口(建议仅对个人 IP 开放或按需访问)。

  3. 验证步骤: 在本地电脑浏览器访问 http://<公网IP>,若出现 NPM 的默认欢迎页(Congratulations! 或默认 404 页面),说明网络链路完全打通。

第三阶段:NPM(Nginx Proxy Manager)配置反向代理

这是将域名请求精准导流到对应后端容器(如 Halo 博客)的关键环节:

  1. 浏览器访问 http://<公网IP>:81 登录 NPM 管理后台。

  2. 点击顶部菜单栏的 Hosts -> Proxy Hosts。

  3. 点击右上角绿色按钮 Add Proxy Host,在弹出的 Details 标签页填写:

    • Domain Names:输入刚解析好的完整域名(例如 yourdomain.com,输完按键盘回车键确认生成标签)。

    • Scheme:选择 http。

    • Forward Hostname / IP:

      • 如果 NPM 和 Halo 在同一个 Docker 网络中,直接填写容器名(如 halo)。

      • 如果不在同一网络或通过宿主机通信,填写云服务器私网 IP 或 Docker 网桥网关(如 172.17.0.1)。

    • Forward Port:填写 Halo 容器的 Web 端口(默认为 8090)。

    • 勾选以下功能开关:

      • Cache Assets(静态资源缓存)

      • Block Common Exploits(基础 SQL 注入及常见漏洞拦截)

      • Websockets Support(支持 WebSocket 实时通信)

第四阶段:申请并开启 Let's Encrypt SSL 免费证书

在同一个配置窗口中,切换到 SSL 标签页完成加密:

  1. SSL Certificate:在下拉框中选择 Request a new SSL Certificate(申请新证书)。

  2. 勾选以下开关:

    • Force SSL(核心:强制将所有的 http:// 访问 301 重定向到安全的 https://)。

    • HTTP/2 Support(提升页面多路复用加载速度)。

    • HSTS Enabled(增强安全防护)。

  3. 填写通知邮箱,并勾选 I Agree to the Let's Encrypt Terms of Service。

  4. 点击右下角 Save 按钮。

    • NPM 后台会自动通过 HTTP-01 验证协议与 Let's Encrypt 机构交互、完成域名所有权核验并下发证书。

第五阶段:最终访问与服务自愈验证

  1. 打开浏览器(无需输入端口号),直接访问:

    Plaintext

    https://yourdomain.com
    
  2. 验证标准:

    • 浏览器地址栏左侧出现安全小锁图标。

    • 点击小锁查看证书,显示颁发机构为 Let's Encrypt 且状态有效。

    • 页面正常加载出 Halo 博客首页,整条链路从 DNS → 443 → NPM 反向代理 → Halo 容器完全走通。