单台腾讯云 VPS:宿主机 Caddy + Docker WordPress(Apache)部署双域名的实施总结

2025年12月30日
Written By huohou

自由职业者

这里是我这次在一台腾讯云 VPS 上成功部署两个 WordPress 域名的经验总结(架构:宿主机安装 Caddy,Docker 里使用 wordpress:php8.2-apache)。

一、最终架构(核心思路)

  • 宿主机(Host)运行 Caddy,统一占用对外端口 80/443,负责自动 HTTPS 证书签发与续期、域名转发。
  • Docker 仅运行 WordPress(Apache 镜像)、MariaDB、Redis 等服务;WordPress 不直接占用 80/443。
  • 每个 WordPress 站点在 Docker 中各自监听一个“仅本机可访问”的端口(例如 8081、8082),由宿主机 Caddy 反代到对应端口。
  • 这样可以在单台 VPS 上稳定扩展多个域名/站点,端口冲突少、排错清晰、维护成本低。

二、关键成功点(最容易踩坑的地方)

  1. 80/443 端口归属
  • 必须确保 Docker 不再通过端口映射占用 80/443(常见表现是 docker-proxy 占用)。
  • 只有宿主机 Caddy 绑定 80/443,否则宿主机 Caddy 无法启动或无法接管 HTTPS。
  1. Docker 中 WordPress 端口策略
  • WordPress 容器只绑定到 127.0.0.1(本机回环),避免暴露到公网。
  • 每个站点使用不同端口(如站点 A 用 8081,站点 B 用 8082),便于扩展和隔离。
  1. Caddyfile 多站配置
  • 在同一个 Caddyfile 中为每个域名配置反向代理规则,分别转发到对应的本机端口。
  • 首次启用 HTTPS 时,可能需要等待几分钟完成证书申请;之后访问会明显变快且稳定。
  1. 域名与安全组
  • 域名必须先正确解析到这台 VPS。
  • 腾讯云安全组入站只需放行:80、443(以及 SSH 端口);不需要放行 8081/8082 等内部端口。
  1. WordPress 域名固定(避免跳转/登录异常)
  • 建议在 WordPress 配置中明确指定站点 URL(常见做法是通过 wp-config.php 设定 HOME/SITEURL 或在后台“设置-常规”确认 URL)。
  • 这样可以避免迁移后出现旧域名跳转、后台登录回跳、静态资源引用错乱等问题。
  1. Redis 对象缓存启用经验
  • 插件报 “连接 127.0.0.1:6379 被拒绝” 的原因:在容器内,127.0.0.1 指的是“WordPress 容器自己”,不是 Redis 容器。
  • 正确做法是让 WordPress 连接到 Docker Compose 服务名(通常是 redis),而不是 localhost。
  • 另外:Object Cache Pro 需要 PHP 的 phpredis 扩展;如果环境里没有加载 phpredis,就会显示 Not connected。此时更省事的做法是使用 Redis Object Cache(可走 Predis/配置更轻),或在自定义镜像中再加入 phpredis 扩展后继续用 OCP。

三、这套方案的优点(为什么最终选择它)

  • 多站扩展简单:新增站点 = 新的端口 + 新域名规则,不需要再折腾 Docker 网络/多份 Caddy 容器。
  • HTTPS 全自动:证书申请/续期交给宿主机 Caddy,稳定性更高。
  • 安全性更好:站点内部端口仅本机可访问,公网只开放 80/443。
  • 排错更直观:Caddy(网关层)与 WordPress(应用层)分离,问题定位更快。

四、落地成果

  • 单台腾讯云 VPS 上已成功运行三个域名的 WordPress 站点。包括本博客
  • 架构已验证可扩展(后续新增 wp3/wp4 只需继续分配端口并在 Caddyfile 增加域名规则)。

《单台腾讯云 VPS:宿主机 Caddy + Docker WordPress(Apache)部署双域名的实施总结》有1条评论

发表评论