Traefik 是一款专为微服务和容器化架构(如 Docker, Kubernetes, LXC 等)打造的现代反向代理与负载均衡器。它最核心的标签是“云原生”和“自动化”。

下面为你系统地介绍它的常用功能、核心用法,以及免费(开源)版的限制。


一、 Traefik 的常用核心功能

  1. 服务自动发现(Provider)
    这是 Traefik 最强大的地方。传统 Nginx 部署新服务时,需要手动改 nginx.conf 并重启。而 Traefik 会持续监听你的 Docker、Kubernetes 或系统文件。当你启动一个新的容器并打了标签,Traefik 会秒级感知并自动生成路由,全程无需重启。
  2. 自动化 SSL 证书管理(ACME)
    内置 Let's Encrypt / ZeroSSL 支持。只需在配置里写明你的邮箱和域名,Traefik 会自动申请、配置并在到期前自动续签加密证书(支持 HTTP 验证和 DNS 验证)。
  3. 丰富的中间件生态(Middlewares)
    在请求到达你的后端服务之前,可以用中间件进行各种加工。常用中间件包括:
  4. 认证:BasicAuth(密码登录)、ForwardAuth(转发第三方认证)。
  5. 安全:HTTPS 强制重定向、添加安全标头(HHeaders)、白名单 IP 限制。
  6. 流量控制:RateLimit(限流防刷)、Buffering(缓冲)。
  7. 灵活的负载均衡策略
    支持加权轮询(WRR)、健康检查(自动剔除死掉的后端服务器)、会话保持(Sticky Sessions)。
  8. 原生支持 HTTP/3 和 WebSockets
    无需额外插件,现代 Web 协议开箱即用。

二、 核心架构与基本用法

理解 Traefik 的用法,只需要理解它的 “四大金刚” 流量走向模型:

Entrypoints(入口) ➔ Routers(路由) ➔ Middlewares(中间件) ➔ Services(服务)

1. 静态配置 vs 动态配置

Traefik 把配置分成了两层,初学者一定要分清:

  • 静态配置(Static):启动时加载,修改必须重启。用来定义:我监听哪些端口(Entrypoints)、我连接什么环境(Docker 还是 K8s)、证书申请人是谁。
  • 动态配置(Dynamic):运行中动态加载,即时生效,无需重启。用来定义:某个域名(Router)走哪个密码(Middleware)转给哪个容器(Service)。

2. 最常用的 Docker 部署示例

在 Docker 环境下,你甚至不需要写任何动态配置文件,直接在 docker-compose.yml 的 labels(标签)里写业务逻辑即可:

services:
  my-web-app:
    image: nginx
    labels:
      - "traefik.enable=true" # 让 Traefik 发现这个容器
      - "traefik.http.routers.myapp.rule=Host(`app.yourdomain.com`)" # 路由:当域名匹配时
      - "traefik.http.routers.myapp.entrypoints=websecure" # 走 443 安全端口
      - "traefik.http.routers.myapp.tls.certresolver=myresolver" # 自动帮我申请并绑定证书

三、 免费(开源)版有哪些限制?

日常我们使用的、通过开源脚本或 GitHub 直接下载的叫 Traefik Proxy (Open Source)。它功能已经极其强悍,满足 95% 以上的个人、工作室和中小型企业需求。

但为了商业变现,官方还提供了一个 Traefik Enterprise(企业版)。免费开源版主要在以下高并发、分布式和企业安全场景中存在限制:

限制维度免费开源版 (Proxy) 的情况企业版 (Enterprise) 的优势
集群与高可用 (HA)不支持原生集群模式。 如果你部署多个 Traefik 实例,它们之间无法同步证书和状态,容易导致 SSL 申请冲突。支持多实例分布式部署,多节点自动同步状态与证书。
分布式 ACME (SSL)证书只能保存在单机(如 acme.json)。多节点需要借助 K8s cert-manager 或外部网盘规避。内置分布式存储,所有集群节点共享和轮询 Let's Encrypt 证书。
高级认证支持仅支持 BasicAuth。若要对接 OIDC、SAML、OAuth2、JWT,必须自己折腾 ForwardAuth 中间件配合外部服务。官方原生内置 OIDC、SAML、OAuth2、JWT、LDAP 等企业级一键认证中间件。
分布式限流限流(RateLimit)只在单机节点内生效。如果是集群,无法统计全局流量。支持分布式集群全局限流,精准防止 DDoS。
Web 界面与管理控制台(Dashboard)仅用于 “只读” 观察路由状态,无法在网页上增删改查。提供功能完备的集中式管理后台,支持可视化配置和多集群监控。
高级安全 (WAF)没有内置的高级 Web 应用防火墙,需自行在后端或通过外部中间件打补丁。内置分布式 WAF(Web Application Firewall)和更高级的 API 安全防护。

总结建议:

  • 如果你是单机部署(单台 PVE、单台云服务器、独立的 K8s 单节点),免费开源版就是神器,没有任何实质性限制,体验极佳。
  • 只有当你的业务发展到需要多台服务器做高可用集群(避免单点故障),或者公司需要强管控的 OIDC/LDAP 统一单点登录 时,免费版才需要通过复杂的第三方开源方案(如结合 cert-manager + Authelia)去“打补丁”解决。