Traefik:63,229 星的云原生反向代理 2026 版
Traefik 是自动发现服务的反向代理。Docker、K8s 集成。TLS 自动获取、中间件、负载均衡。
- ⭐ 63229
- Go
- MIT
- 更新于 2026-05-19
什么是 Traefik? #
Traefik 是云原生反向代理。自动发现 Docker、Kubernetes 服务。无需手动配置,0 停机更新路由。
安装 #
Docker #
version: "3.8"
services:
traefik:
image: traefik:v3.2
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.mytlsresolver.acme.httpchallenge=true"
- "--certificatesresolvers.mytlsresolver.acme.httpchallenge.entrypoints=web"
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
Kubernetes Helm #
helm repo add traefik https://traefik.github.io/charts
helm install traefik traefik/traefik
入门指南 #
1. 启动 Traefik #
docker run -d -p 80:80 -p 443:443 -p 8080:8080 \
--name traefik \
-v /var/run/docker.sock:/var/run/docker.sock \
traefik:v3.2
2. 添加标签 #
services:
webapp:
image: nginx
labels:
- "traefik.enable=true"
- "traefik.http.routers.web.rule=Host(`localhost`)"
- "traefik.http.routers.web.entrypoints=web"
3. 访问面板 #
访问 http://localhost:8080 查看 Traefik 面板。
核心概念 #
| 组件 | 说明 |
|---|---|
| Entrypoint | 监听端口(80、443) |
| Router | 路由规则 |
| Middleware | 中间件(重定向、压缩) |
| Service | 后端服务 |
| Provider | 服务发现(Docker、K8s) |
路由配置 #
基本路由 #
labels:
- "traefik.http.routers.my-router.rule=Host(`example.com`)"
- "traefik.http.routers.my-router.service=my-service"
路径路由 #
labels:
- "traefik.http.routers.api.rule=Host(`api.example.com`) && PathPrefix(`/v1`)"
匹配器 #
Host():主机匹配Path():路径匹配Headers():头部匹配Query():查询参数匹配
中间件 #
重定向 #
labels:
- "traefik.http.middlewares.redirect-to-https.redirectschemescheme=https"
- "traefik.http.routers.http_router.middlewares=redirect-to-https"
基于路径的重写 #
labels:
- "traefik.http.middlewares.stripprefix.stripPrefix.prefixes=/api"
访问控制 #
labels:
- "traefik.http.middlewares.auth.basicauth.users=admin:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/"
TLS/HTTPS #
自动证书 #
labels:
- "traefik.http.routers.web.tls.certresolver=myresolver"
完整配置 #
http:
certResolvers:
myresolver:
acme:
email: admin@example.com
storage: acme.json
httpChallenge: {}
Kubernetes 高级 #
IngressRoute #
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: web-route
spec:
entryPoints:
- websecure
routes:
- match: Host(`web.example.com`)
kind: Rule
services:
- name: web-service
port: 80
tls:
certResolver: myresolver
Middleware CRD #
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: rate-limit
spec:
rateLimit:
average: 100
burst: 50
观察与监控 #
Prometheus 指标 #
additionalArguments:
- "--metrics.prometheus=true"
- "--metrics.prometheus.entrypoints=websecure"
Datadog #
metrics:
prometheus:
entryPoints:
- websecure
service: true
性能优化 #
连接池 #
providers:
docker:
exposedByDefault: false
network: proxy
watch: true
静态配置 #
log:
level: ERROR
accessLog:
format: json
常见问题 #
Q: Traefik 会产生性能开销吗?
答:很小。Go 语言实现,基准测试显示 ~15ms 延迟。
Q: 如何支持 WebSocket?
答:Traefik 原生支持。无需额外配置。
Q: 如何排查问题?
答:查看日志、面板、Prometheus 指标。
总结 #
Traefik 把「服务发现 + 反向代理」变成「一行标签搞定」。Docker + K8s 的必备利器。
参考:doc.traefik.io 官方文档 更新:2026-05-19
💬 留言讨论