Traefik | Redirekt inkl. Path
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
- 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.
- In YAML müssen Backslashes escaped werden (
- TLS/HTTPS
- DNS-Einträge
- Sowohl
domain.netals auchwww.domain.demüssen im DNS auf die Traefik-Instanz zeigen.
- Sowohl
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.