Mein Icon

Traefik Middleware: Die ultimative Anleitung für mehr Sicherheit und Kontrolle (mit Docker-Beispielen)

10. Juni 2025·9 Minuten zu lesen
traefik-middleware-anleitung

Du hast Traefik erfolgreich auf deinem Ubuntu-Server mit Docker eingerichtet. Deine Container sind erreichbar – ein super erster Schritt! Aber jetzt kommt der entscheidende Teil: Wie machst du dein Setup wirklich sicher, robust und flexibel? Die Antwort lautet: Traefik Middleware.

Wenn du Traefik bisher nur als einfachen Reverse Proxy genutzt hast, verpasst du sein mächtigstes Feature. Middlewares sind das Herzstück von Traefik und erlauben es dir, Anfragen zu verändern, zu analysieren und abzusichern, bevor sie deinen eigentlichen Service erreichen.

In dieser Anleitung tauchen wir tief in die Welt der Traefik Middlewares ein. Du lernst nicht nur, was sie sind, sondern auch, wie du die drei wichtigsten Anwendungsfälle in deiner docker-compose.yml umsetzt:

  1. Automatische HTTP zu HTTPS Umleitung
  2. Hinzufügen wichtiger Security Headers
  3. Schützen von Services mit einem Passwort (Basic Auth)

Was genau ist eine Traefik Middleware?

Stell dir eine Traefik Middleware wie einen Kontrolleur in einer Fabrikhalle vor. Eine eingehende Anfrage (z.B. von einem Browser) ist ein Bauteil auf einem Förderband. Bevor dieses Bauteil zum finalen Service (deiner Anwendung im Container) gelangt, durchläuft es eine Reihe von Stationen – die Middlewares.

Jede Middleware hat eine spezifische Aufgabe:

  • Sie kann die Anfrage modifizieren (z.B. einen Header hinzufügen).
  • Sie kann die Anfrage umleiten (z.B. von HTTP zu HTTPS).
  • Sie kann entscheiden, ob die Anfrage überhaupt durchgelassen wird (z.B. bei einer Authentifizierung).

Das Beste daran: Du kannst diese Middlewares wie Legosteine zu einer Kette (Chain) zusammensetzen, um komplexe Regeln zu erstellen.

Die Anatomie einer Middleware-Konfiguration in Docker

In einer Docker-Umgebung werden Middlewares meist direkt über Labels am jeweiligen Container konfiguriert. Der Prozess besteht immer aus zwei Schritten:

  1. Definition der Middleware: Du gibst der Middleware einen eindeutigen Namen und definierst, was sie tun soll.
  2. Anwendung auf einen Router: Du weist einen Router an, die definierte Middleware zu verwenden.
# docker-compose.yml
services:
  my-app:
    image: traefik/whoami
    labels:
      # 1. Middleware DEFINIEREN
      - "traefik.http.middlewares.my-test-middleware.basicauth.users=admin:$$apr1$$...$$"

      # 2. Middleware auf den Router ANWENDEN
      - "traefik.http.routers.my-app-router.middlewares=my-test-middleware@docker"

Der Suffix @docker teilt Traefik mit, dass die Middleware-Definition bei einem Docker-Provider (also in den Labels) zu finden ist.


Praktische Anwendungsfälle: Sichere dein Setup!

Genug der Theorie! Lass uns drei der nützlichsten Middlewares Schritt für Schritt einrichten.

1. Automatische HTTP zu HTTPS Umleitung

Ziel: Alle Anfragen an den Port 80 (web) sollen auf Port 443 (websecure) umgeleitet werden.

# docker-compose.yml (Ausschnitt für einen Service)
services:
  mein-sicherer-service:
    image: traefik/whoami
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.mein-service-secure.rule=Host(`service.deine-domain.de`)"
      - "traefik.http.routers.mein-service-secure.entrypoints=websecure"
      - "traefik.http.routers.mein-service-secure.tls.certresolver=myresolver"

      # Redirect-Middleware
      - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
      - "traefik.http.routers.mein-service-http.rule=Host(`service.deine-domain.de`)"
      - "traefik.http.routers.mein-service-http.entrypoints=web"
      - "traefik.http.routers.mein-service-http.middlewares=redirect-to-https@docker"

2. Security Headers für besseren Schutz

labels:
  - "traefik.http.middlewares.secure-headers.headers.forceSTSHeader=true"
  - "traefik.http.middlewares.secure-headers.headers.stsSeconds=31536000"
  - "traefik.http.middlewares.secure-headers.headers.stsIncludeSubdomains=true"
  - "traefik.http.middlewares.secure-headers.headers.stsPreload=true"
  - "traefik.http.middlewares.secure-headers.headers.frameDeny=true"
  - "traefik.http.middlewares.secure-headers.headers.contentTypeNosniff=true"
  - "traefik.http.routers.mein-service-secure.middlewares=secure-headers@docker"

3. Services mit Passwort schützen (Basic Auth)

# Ggf. installieren: sudo apt-get install apache2-utils
htpasswd -nb DEIN_BENUTZERNAME DEIN_SICHERES_PASSWORT
labels:
  - "traefik.http.middlewares.my-basic-auth.basicauth.users=admin:$$apr1$$j3hG8lJ4$$t1k9GGD43TzV7a3Lz2WjK."
  - "traefik.http.routers.mein-service-secure.middlewares=my-basic-auth@docker"

Middlewares verketten

labels:
  - "traefik.http.middlewares.secure-headers.headers.frameDeny=true"
  - "traefik.http.middlewares.my-basic-auth.basicauth.users=admin:$$apr1$$j3hG8lJ4$$t1k9GGD43TzV7a3Lz2WjK."
  - "traefik.http.routers.mein-service-secure.middlewares=secure-headers@docker,my-basic-auth@docker"

Zusammenfassung

Traefik Middlewares sind ein unglaublich mächtiges Werkzeug. Sie verwandeln deinen einfachen Reverse Proxy in eine flexible und sichere Schaltzentrale für deinen gesamten Web-Traffic.

Du hast heute gelernt, wie du:

  • Anfragen sicher auf HTTPS umleitest,
  • deine Anwendungen mit Security Headers stärkst,
  • und sensible Bereiche mit einem Passwort (Basic Auth) schützt.
© Felix Stiffel 2025 | Alle Rechte vorbehalten