每上一个服务,就要打开 nginx 配置、加一段 server 块、reload 一次。配置越堆越长,改错一个括号全站挂掉,证书还得单独申请和续期。

Traefik 的思路是:别写配置,让它自己发现服务。

Traefik:容器一启动,路由就配好了

手写代理配置的累积成本

在传统反向代理里,每加一个服务都要:

  • 手写一段 location / server 配置
  • 确认端口不冲突
  • reload 让配置生效(reload 失败就是事故)
  • 单独为该域名申请证书
  • 快到期时记得续期

服务一多,这份配置就成了没人敢碰的资产。

Traefik 的做法

Traefik 的做法

自动服务发现。 它监听 Docker 等编排平台,容器一启动就自动读取标签生成路由,不用改任何中心配置。

自动 HTTPS。 对接 Let's Encrypt,证书自动申请、自动续期,到期这件事从此不用管。

中间件机制。 限流、鉴权、重定向、压缩、请求头改写,都以中间件形式挂载,可复用、可组合。

原生支持 Docker / Kubernetes。 用标签或 CRD 做声明式配置,服务配置跟着服务本身走,不再集中堆在一个文件里。

自带仪表盘。 Web 界面能看到当前所有路由和健康状态,排查问题方便。

和传统代理的差别

对比传统代理

Traefik 传统 nginx
配置方式 自动发现 / 声明式 手写配置文件
容器适配 原生 需额外工具辅助
证书 自动申请续期 需自己配
上手成本 概念稍多 熟悉者更快

典型用法

三步用法

  1. 跑 Traefik — 以容器方式启动,挂载 Docker socket 用于发现服务
  2. 给服务打标签 — 在目标容器的 labels 里写域名和端口规则
  3. 访问即生效 — 容器启动后自动注册路由,证书一并申请

需要注意

它的概念比 nginx 多。 Provider、Router、Middleware、EntryPoint 这些术语要先理解一遍,初次上手会有点门槛。

挂载 Docker socket 有安全含义。 能访问 Docker socket 就相当于能控制容器,注意不要把这个端口暴露出去。

老手可能觉得 nginx 更快。 如果你已经有一套稳定的 nginx 配置和运维流程,迁移未必划算。Traefik 的优势在"服务频繁变动"的场景——服务越多、变动越频繁,收益越明显。

对自建一堆服务、还在手动改 nginx 的人来说,Traefik 是那种早该换、换了就回不去的东西。

项目地址: https://github.com/traefik/traefik