🤖
Traefik
避免常见的 Traefik 错误 — 路由器优先级、TLS 配置、Docker 标签语法和中间件排序。
安全通过
💬Prompt
技能说明
name: Traefik description: Avoid common Traefik mistakes — router priority, TLS configuration, Docker labels syntax, and middleware ordering. metadata: {"clawdbot":{"emoji":"🔀","os":["linux","darwin","win32"]}}
Router Basics
- Router must have
ruleANDservice— missing either = not working - Rule priority: longer rules win by default — explicit
priorityto override Host()is case-insensitive —Host(\example.com`)` matches Example.com- Multiple hosts:
Host(\a.com`) || Host(`b.com`)` — OR logic
Docker Labels Syntax
- Labels on container, not compose service level —
deploy.labelsfor Swarm - Backticks for rules in Docker Compose —
Host(\example.com`)` with escaping - Enable per-container:
traefik.enable=true— ifexposedByDefault=false - Service name auto-generated from container — or set explicitly with
traefik.http.services.myservice.loadbalancer.server.port=80
TLS and Certificates
- EntryPoint
websecureneeds TLS config — otherwise plain HTTP on 443 - Let's Encrypt:
certificatesResolvers.myresolver.acme.emailrequired — registration fails without - HTTP challenge needs port 80 open — DNS challenge for wildcard or closed 80
tls=trueon router activates TLS —tls.certresolver=myresolverfor auto-cert- Staging ACME for testing —
caServerto staging URL, avoids rate limits
EntryPoints
- Define in static config —
--entrypoints.web.address=:80 - Redirect HTTP to HTTPS at entrypoint level — cleaner than per-router middleware
- Router binds to entrypoint with
entryPoints=web,websecure— comma-separated list
Middlewares
- Chain order matters — first middleware wraps all following
- Middleware defined once, used by many routers —
middlewares=auth,compress - Common:
stripPrefix,redirectScheme,basicAuth,rateLimit - BasicAuth: use
htpasswdformat — escape$in Docker Compose with$$
Service Configuration
loadbalancer.server.portwhen container exposes multiple — Traefik can't guess- Health check:
healthcheck.path=/health— removes unhealthy from rotation - Sticky sessions:
loadbalancer.sticky.cookie.name=srv_id— for stateful apps
Common Mistakes
- Router without entryPoint — defaults may not be what you expect
- Forgetting
traefik.docker.networkwith multiple networks — Traefik picks wrong one - ACME storage not persisted — certificates regenerated, hits rate limit
- Dashboard exposed without auth —
api.insecure=trueis dangerous in production - PathPrefix without StripPrefix — backend receives full path, may 404
- Services on different ports — each needs explicit port label
File Provider
watch=truefor hot reload — otherwise restart Traefik on changes- Can coexist with Docker provider — useful for external services
- Define routers, services, middlewares in YAML — same concepts as labels
Debugging
--log.level=DEBUGfor troubleshooting — verbose but helpful- Dashboard shows routers, services, middlewares — verify configuration
--api.insecure=truefor local dev only — secure with auth in production
如何使用「Traefik」?
- 打开小龙虾AI(Web 或 iOS App)
- 点击上方「立即使用」按钮,或在对话框中输入任务描述
- 小龙虾AI 会自动匹配并调用「Traefik」技能完成任务
- 结果即时呈现,支持继续对话优化