Traefik 是一款专为微服务和容器化架构(如 Docker, Kubernetes, LXC 等)打造的现代反向代理与负载均衡器。它最核心的标签是“云原生”和“自动化”。
下面为你系统地介绍它的常用功能、核心用法,以及免费(开源)版的限制。
一、 Traefik 的常用核心功能
- 服务自动发现(Provider)
这是 Traefik 最强大的地方。传统 Nginx 部署新服务时,需要手动改nginx.conf并重启。而 Traefik 会持续监听你的 Docker、Kubernetes 或系统文件。当你启动一个新的容器并打了标签,Traefik 会秒级感知并自动生成路由,全程无需重启。 - 自动化 SSL 证书管理(ACME)
内置 Let's Encrypt / ZeroSSL 支持。只需在配置里写明你的邮箱和域名,Traefik 会自动申请、配置并在到期前自动续签加密证书(支持 HTTP 验证和 DNS 验证)。 - 丰富的中间件生态(Middlewares)
在请求到达你的后端服务之前,可以用中间件进行各种加工。常用中间件包括: - 认证:BasicAuth(密码登录)、ForwardAuth(转发第三方认证)。
- 安全:HTTPS 强制重定向、添加安全标头(HHeaders)、白名单 IP 限制。
- 流量控制:RateLimit(限流防刷)、Buffering(缓冲)。
- 灵活的负载均衡策略
支持加权轮询(WRR)、健康检查(自动剔除死掉的后端服务器)、会话保持(Sticky Sessions)。 - 原生支持 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)去“打补丁”解决。