Traefik | Redirekt inkl. Path

Traefik | Redirekt inkl. Path
Photo by Mohd Afiq / Unsplash

Um mit Traefik einen Redirect von domain.net nach www.domain.de einzurichten, können Sie in den Labels Ihrer Docker-Service-Definition den Middleware-Typ redirectregex oder redirectscheme verwenden.
Hier ein praxiserprobtes Beispiel für docker-compose.yml, das einen permanenten Redirect (HTTP 301) von der nackten Domain auf die www-Subdomain erzeugt:

version: '3.9'
services:
  myapp:
    image: nginx:alpine
    labels:
      - "traefik.enable=true"

      # Router für die nackte Domain (ohne www)
      - "traefik.http.routers.domain.rule=Host(`domain.net`)"
      - "traefik.http.routers.domain.entrypoints=web"
      - "traefik.http.routers.domain.middlewares=redirect-to-www"

      # Middleware: Redirect von domain.net nach www.domain.de
      - "traefik.http.middlewares.redirect-to-www.redirectregex.regex=^https?://domain\\.net/(.*)"
      - "traefik.http.middlewares.redirect-to-www.redirectregex.replacement=https://www.domain.de/$${1}"
      - "traefik.http.middlewares.redirect-to-www.redirectregex.permanent=true"

      # Router für die eigentliche App unter www.domain.de
      - "traefik.http.routers.myapp.rule=Host(`www.domain.de`)"
      - "traefik.http.routers.myapp.entrypoints=websecure"
      - "traefik.http.routers.myapp.tls.certresolver=myresolver"

Wichtige Hinweise

  1. Regex beachten
    • In YAML müssen Backslashes escaped werden (\\. für einen Punkt).
    • $${1} wird genutzt, weil ein einfaches ${1} von Docker-Compose als Umgebungsvariable interpretiert würde.
  2. TLS/HTTPS
  3. DNS-Einträge
    • Sowohl domain.net als auch www.domain.de müssen im DNS auf die Traefik-Instanz zeigen.

Wenn Sie automatisch von HTTP auf HTTPS umleiten, können Sie zusätzlich redirectscheme für Port 80 nutzen:

- "traefik.http.middlewares.https-redirect.redirectscheme.scheme=https"
- "traefik.http.middlewares.https-redirect.redirectscheme.permanent=true"

und diesen Middleware dem web-EntryPoint zuweisen.

Mit dieser Konfiguration fängt Traefik jede Anfrage an http://domain.net (oder https://domain.de, je nach EntryPoint) ab und leitet sie permanent auf https://www.domain.de/... um.

Read more