HTTP Middlewares¶
Controlling connections

Configuration Example¶
# As a Docker Label
whoami:
  #  A container that exposes an API to show its IP address
  image: traefik/whoami
  labels:
    # Create a middleware named `foo-add-prefix`
    - "traefik.http.middlewares.foo-add-prefix.addprefix.prefix=/foo"
    # Apply the middleware named `foo-add-prefix` to the router named `router1`
    - "traefik.http.routers.router1.middlewares=foo-add-prefix@docker"# As a Kubernetes Traefik IngressRoute
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: middlewares.traefik.containo.us
spec:
  group: traefik.containo.us
  version: v1alpha1
  names:
    kind: Middleware
    plural: middlewares
    singular: middleware
  scope: Namespaced
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: stripprefix
spec:
  stripPrefix:
    prefixes:
      - /stripit
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroute
spec:
# more fields...
  routes:
    # more fields...
    middlewares:
      - name: stripprefix# Create a middleware named `foo-add-prefix`
- "traefik.http.middlewares.foo-add-prefix.addprefix.prefix=/foo"
# Apply the middleware named `foo-add-prefix` to the router named `router1`
- "traefik.http.routers.router1.middlewares=foo-add-prefix@consulcatalog""labels": {
  "traefik.http.middlewares.foo-add-prefix.addprefix.prefix": "/foo",
  "traefik.http.routers.router1.middlewares": "foo-add-prefix@marathon"
}# As a Rancher Label
labels:
  # Create a middleware named `foo-add-prefix`
  - "traefik.http.middlewares.foo-add-prefix.addprefix.prefix=/foo"
  # Apply the middleware named `foo-add-prefix` to the router named `router1`
  - "traefik.http.routers.router1.middlewares=foo-add-prefix@rancher"# As TOML Configuration File
[http.routers]
  [http.routers.router1]
    service = "service1"
    middlewares = ["foo-add-prefix"]
    rule = "Host(`example.com`)"
[http.middlewares]
  [http.middlewares.foo-add-prefix.addPrefix]
    prefix = "/foo"
[http.services]
  [http.services.service1]
    [http.services.service1.loadBalancer]
      [[http.services.service1.loadBalancer.servers]]
        url = "http://127.0.0.1:80"# As YAML Configuration File
http:
  routers:
    router1:
      service: service1
      middlewares:
        - "foo-add-prefix"
      rule: "Host(`example.com`)"
  middlewares:
    foo-add-prefix:
      addPrefix:
        prefix: "/foo"
  services:
    service1:
      loadBalancer:
        servers:
          - url: "http://127.0.0.1:80"Available HTTP Middlewares¶
| Middleware | Purpose | Area | 
|---|---|---|
| AddPrefix | Adds a Path Prefix | Path Modifier | 
| BasicAuth | Adds Basic Authentication | Security, Authentication | 
| Buffering | Buffers the request/response | Request Lifecycle | 
| Chain | Combines multiple pieces of middleware | Misc | 
| CircuitBreaker | Prevents calling unhealthy services | Request Lifecycle | 
| Compress | Compresses the response | Content Modifier | 
| ContentType | Handles Content-Type auto-detection | Misc | 
| DigestAuth | Adds Digest Authentication | Security, Authentication | 
| Errors | Defines custom error pages | Request Lifecycle | 
| ForwardAuth | Delegates Authentication | Security, Authentication | 
| Headers | Adds / Updates headers | Security | 
| IPWhiteList | Limits the allowed client IPs | Security, Request lifecycle | 
| InFlightReq | Limits the number of simultaneous connections | Security, Request lifecycle | 
| PassTLSClientCert | Adds Client Certificates in a Header | Security | 
| RateLimit | Limits the call frequency | Security, Request lifecycle | 
| RedirectScheme | Redirects based on scheme | Request lifecycle | 
| RedirectRegex | Redirects based on regex | Request lifecycle | 
| ReplacePath | Changes the path of the request | Path Modifier | 
| ReplacePathRegex | Changes the path of the request | Path Modifier | 
| Retry | Automatically retries in case of error | Request lifecycle | 
| StripPrefix | Changes the path of the request | Path Modifier | 
| StripPrefixRegex | Changes the path of the request | Path Modifier |