单服务器多应用场景下的终极方案:Traefik复用80/443端口 + 自动HTTPS证书
预计阅读2分钟

目录
为什么需要这个方案?
当我们在单台服务器部署多个Web应用时,总会面临两个难题:
- 每个应用都想使用80/443标准端口
- 每个应用都需要独立的HTTPS证书
- 应用需要支持动态启停互不影响
传统方案(如Nginx反向代理)需要手动维护配置,每次增减服务都要:
- 修改配置文件
- 重新加载配置
- 手动申请证书
- 处理证书续期
而使用Traefik可以做到:
- 端口复用:所有应用共享80/443端口
- 自动发现:容器启停自动生效
- 自动证书:Let’s Encrypt全自动申请/续期
- 零停机:配置变更无需重启服务
环境准备
- 云服务器(1核1G以上配置)
- 已安装Docker和docker-compose
- 域名(示例使用
starxtek.com
) - 开放服务器的80/443端口
搭建Traefik网关
1. 编写Traefik的docker-compose.yml
proxy/docker-compose.yml
|
|
2. 启动Traefik:
cd traefik
docker compose up -d
3. 查看Dashboard
打开https://traefik.starxtek.com/dashboard/#/http/routers,使用test/test登录,应该可以看到下图
部署测试应用
1. 编写whoami的docker-compose.yml
whoami/docker-compose.yml
|
|
关键标签解释:
- traefik.enable=true:启用该容器的代理
- Host(
whoami.starxtek.com
):域名绑定规则 - loadbalancer.server.port=80:traefik连接本应用的80端口
2. 启动whoami:
cd whoami
docker compose up -d
3. 查看Dashboard
刷新https://traefik.starxtek.com/dashboard/#/http/routers,应该可以看到whoami.starxtek.com
已经上线
4. 访问测试应用
继续部署其它应用
参照whoami,重复部署测试应用的过程即可。
方案优势总结
- 服务自治:每个应用独立维护自己的配置
- 动态生效:增删服务无需重启Traefik
- 证书无忧:全自动申请/续期HTTPS证书
- 资源节约:单服务器运行数十个Web服务
- 流量精准:支持基于Host/Path/Header的路由
常见问题排查
Q: 证书申请失败
- 检查域名解析是否生效
- 确保80端口可被外部访问
- 查看日志:docker logs traefik
Q: 访问返回404
- 确认容器已连接到proxy网络
- 检查labels拼写是否正确
- 验证docker.sock挂载权限
部署完成后,你的服务器就变成了一个支持弹性扩展的Web服务托管平台!任何新增服务只需配置正确的labels即可立即上线,真正实现"部署即上线"的云原生体验。