boxmoe_header_banner_img

Hello! 欢迎来到Akurisu的站点!

加载中

文章导读

关于此网站建立和起步实践(三)


avatar
akurisu 2026年2月11日 116

4.启用SSL证书

普通HTTP协议采用明文传输,容易被窃听、篡改,并不安全。因此我们需要SSL来解决这个问题。

我通过NPM(Nginx Proxy Manager)配置SSL证书。

NPM是一个运行在Docker容器中的可视化反向代理和SSL证书管理工具,接收外界对你的域名的访问,然后向内转发到你真正的运行服务的容器

访问一个NPM配置SSL的HTTPS网站过程如下:

  • 所有公网HTTPS请求通过宿主机的物理网卡进入,经端口映射后,被NPM接管。
  • NPM 首先完成 SSL/TLS 终止(将加密的 HTTPS 请求解密为明文 HTTP 请求),然后通过自身的网络接口将该 HTTP 请求转发到自定义网桥。(veth pair 是 “容器” 和 “网桥” 之间的连接载体)
  • 经过网桥后,网桥直接通过目标容器已接入的 veth pair,将明文请求投递到目标容器。
  • 目标容器处理完请求后,将 HTTP 响应原路返回给 NPM,NPM 将该明文 HTTP 响应重新加密为 HTTPS 响应,最终经宿主机物理网卡返回给客户端。

配置过程:

  1. 创建自定义内部网络(若未创建):bash运行docker network create wp_network
  2. 修改 WordPress 的 docker-compose.yml 文件:
    • 让 WordPress 容器接入上述自定义网络(wp_network);
    • 移除 WordPress 容器的 80/443 端口映射(ports 字段),仅对同一网络内的 NPM 容器可见。
  3. 在目标目录创建 docker-compose.proxy.yml 文件(配置 NPM),文件需包含核心内容:
    • 使用 NPM 官方镜像(jc21/nginx-proxy-manager:latest);
    • 映射宿主机 80/443/81 端口到容器对应端口;
    • 接入与 WordPress 相同的自定义网络(wp_network);
    • 添加数据卷(./npm/data:/data、./npm/letsencrypt:/etc/letsencrypt),保证证书 / 配置持久化;具体模板可参考 NPM 官方文档或可靠教程。
  4. 使 WordPress 配置生效:在 WordPress 的 docker-compose.yml 所在目录执行:bash运行docker-compose down # 停止并删除现有服务 docker-compose up -d # 重新启动服务
  5. 启动 NPM 服务:在 docker-compose.proxy.yml 所在目录执行终端命令:bash运行sudo docker-compose -f docker-compose.proxy.yml up -d
  6. 开放宿主机端口(防火墙 / 安全组):需开放 80、443、81 端口,以公网 Ubuntu 为例:bash运行sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 81/tcp sudo ufw reload
  7. 配置 NPM 并申请 SSL 证书:
    • 打开浏览器,访问 http:// 你的 VPS 公网 IP:81;
    • 首次登录(默认账号:admin@example.com,密码:changeme),登录后立即修改密码;
    • 点击 “Hosts> Proxy Hosts > Add Proxy Host”,填写:
      • Domain Names:你的域名;
      • Forward Hostname/IP:WordPress 容器名或 IP(如 wordpress);
      • Forward Port:80;
    • 切换到 “SSL” 标签页,选择 “Request a new SSL Certificate”,填写邮箱,勾选 “Force SSL”“HTTP/2 Support”,点击 “Save” 自动申请 Let’s Encrypt 证书。

完成以上步骤并确认证书申请成功后,你的 SSL(HTTPS)配置就完成了。



评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字
插入代码