Example 3: Service-Level Docker Compose
When individual microservices require custom regex rules, sensitive directory exceptions, query inspection, or dedicated error payloads, configure RouteWarden at the service router level.
Configuration Preview
# dynamic_conf.ymlhttp: middlewares: service-warden: plugin: routewarden: enabled: true enableDefaultPatterns: true checkQuery: true pathPatterns: - '(?i)^/admin(/.*)?$' - '(?i)^/api/internal(/.*)?$' allowPatterns: - '(?i)^/robots\.txt$' - '(?i)^/\.well-known(/.*)?$' allowedIps: - "192.168.1.0/24" - "10.10.0.0/16" response: mode: json statusCode: 403 body: '{"error":"access_denied","service":"web"}' headers: X-Protected-By: "RouteWarden" routers: web-router: rule: "Host(`example.com`)" entryPoints: - web middlewares: - service-warden service: web-serviceDocker Compose Example
services: web: image: my-web-app:latest labels: - "traefik.enable=true" - "traefik.http.routers.web.rule=Host(`example.com`)" - "traefik.http.routers.web.entrypoints=web" - "traefik.http.routers.web.middlewares=service-warden" - "traefik.http.middlewares.service-warden.plugin.routewarden.enabled=true" - "traefik.http.middlewares.service-warden.plugin.routewarden.enableDefaultPatterns=true" - "traefik.http.middlewares.service-warden.plugin.routewarden.checkQuery=true" - "traefik.http.middlewares.service-warden.plugin.routewarden.pathPatterns=(?i)^/admin(/.*)?$,(?i)^/api/internal(/.*)?$" - "traefik.http.middlewares.service-warden.plugin.routewarden.allowPatterns=(?i)^/robots\\.txt$,(?i)^/\\.well-known(/.*)?$" - "traefik.http.middlewares.service-warden.plugin.routewarden.allowedIps=192.168.1.0/24,10.10.0.0/16" - "traefik.http.middlewares.service-warden.plugin.routewarden.response.mode=json" - "traefik.http.middlewares.service-warden.plugin.routewarden.response.statusCode=403" - "traefik.http.middlewares.service-warden.plugin.routewarden.response.headers.X-Protected-By=RouteWarden"