- Snippet Path
Different Traefik ratelimit based on HTTP Method
- Authors
- ← Back to snippet list
- Name
- Aryan Ebrahimpour
- GitHub
- @avestura
- Snippet
yaml
services:
myservice:
image: foo:v1
labels:
- traefik.http.services.myservice.loadbalancer.server.port=8080
# Router for GET and OPTIONS with relaxed ratelimit
- traefik.http.routers.foo-get-options.entrypoints=web
- traefik.http.routers.foo-get-options.rule=Host(`${HOST}`) && (Method(`GET`) || Method(`OPTIONS`))
- traefik.http.routers.foo-get-options.priority=1000
- traefik.http.routers.foo-get-options.middlewares=gw-get-options-ratelimit
- traefik.http.routers.foo-get-options.service=myservice
- traefik.http.middlewares.foo-get-options-ratelimit.ratelimit.average=200
- traefik.http.middlewares.foo-get-options-ratelimit.ratelimit.period=2s
- traefik.http.middlewares.foo-get-options-ratelimit.ratelimit.burst=200
- traefik.http.middlewares.foo-get-options-ratelimit.ratelimit.sourcecriterion.requestheadername=X-Forwarded-For
# Router for the rest of the methods with stricter ratelimit
- traefik.http.routers.foo.entrypoints=web
- traefik.http.routers.foo.rule=Host(`${HOST}`)
- traefik.http.routers.foo.priority=999
- traefik.http.routers.foo.middlewares=gw-ratelimit
- traefik.http.routers.foo.service=myservice
- traefik.http.middlewares.foo-ratelimit.ratelimit.average=20
- traefik.http.middlewares.foo-ratelimit.ratelimit.period=5s
- traefik.http.middlewares.foo-ratelimit.ratelimit.burst=20
- traefik.http.middlewares.foo-ratelimit.ratelimit.sourcecriterion.requestheadername=X-Forwarded-For