You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DigitalOcean上Docker+Nginx-proxy子域名配置疑问

子域名配置与nginx-proxy路由的正确方式

我来帮你理清这个配置的核心关键点,直接给你明确答案和逻辑:

1. 必须在DigitalOcean域名面板添加子域名

是的,你必须在DigitalOcean的域名管理面板里添加对应的子域名解析记录,具体要求:

  • 子域名类型选择A记录(如果用IPv6则选AAAA)
  • 所有子域名(wp1.mydomain.com、wp2.mydomain.com)和主域名mydomain.com,全部指向你的VPS公网IP,不需要加任何端口号!

2. 为什么不需要指向容器端口?——nginx-proxy的核心价值

你之前的疑惑点正好是nginx-proxy的核心作用:
nginx-proxy是运行在你的VPS上的反向代理容器,它会监听主机的80(HTTP)和443(HTTPS)端口。当外部用户访问wp1.mydomain.com时:

  1. DNS把这个子域名解析到你的VPS IP,请求先到达VPS的80/443端口;
  2. nginx-proxy通过挂载的/var/run/docker.sock获取所有运行中容器的环境变量,找到设置了VIRTUAL_HOST=wp1.mydomain.com的WordPress容器;
  3. nginx-proxy自动把请求转发到这个WP容器的内部端口(通常是80),整个过程不需要你把容器端口直接暴露给公网。

简单说:nginx-proxy就是你的VPS的“入口门卫”,所有域名请求都先找它,它再根据域名把请求分发到对应的容器,这也是它能实现多站点的核心逻辑。

3. 对应你的架构的配置要点

确保你启动容器时做好这些设置:

  • nginx-proxy容器:启动时要挂载/var/run/docker.sock(让它能感知容器状态),同时挂载证书存储目录(配合Let's Encrypt插件),并监听主机的80和443端口。
  • 每个WordPress容器:启动时添加两个环境变量:
    -e VIRTUAL_HOST=wp1.mydomain.com \
    -e LETSENCRYPT_HOST=wp1.mydomain.com
    
    这样nginx-proxy就会自动为这个子域名生成反向代理规则,Let's Encrypt插件也会自动申请并续期SSL证书。
  • 主域名mydomain.com:可以单独部署一个静态页面容器(或者用WordPress做站点列表),同样设置VIRTUAL_HOST=mydomain.com和LETSENCRYPT_HOST=mydomain.com,nginx-proxy会把主域名的请求转发到这个容器。

4. 验证步骤

  • 配置DNS后,用nslookup wp1.mydomain.com检查解析结果是否是你的VPS IP;
  • 访问wp1.mydomain.com,确认能打开对应的WP站点,且浏览器显示SSL证书有效;
  • 同理验证wp2.mydomain.com和主域名是否正常跳转。

内容的提问来源于stack exchange,提问作者user5208018

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:39:59