Traefik | Hostnamen zu bestehenden Router hinzufügen
Um einem bestehenden Traefik-Router einen zusätzlichen Hostnamen zu geben, musst du lediglich die Host()-Bedingung in der rule erweitern.
Das geschieht über das entsprechende Docker-Label (oder in der docker-compose.yml) mit einem logischen ODER (||).
Beispiel mit docker-compose.yml:
version: "3.8"
services:
myapp:
image: myimage:latest
labels:
- "traefik.enable=true"
- "traefik.http.routers.myapp.rule=Host(`example.com`) || Host(`www.example.com`)"
- "traefik.http.services.myapp.loadbalancer.server.port=80"
Erklärung
- traefik.http.routers.myapp.rule
- Mehrere Hosts können mit
||verknüpft werden. - Jede Host-Angabe kommt in eigene Backticks oder einfache Anführungszeichen.
- Mehrere Hosts können mit
Du kannst beliebig viele Hostnamen hinzufügen:
- "traefik.http.routers.myapp.rule=Host(`example.com`) || Host(`www.example.com`) || Host(`alt.example.net`)"
Alternative: mehrere Router
Falls du unterschiedliche Mittel (z. B. TLS-Optionen, Middlewares) pro Host brauchst, kannst du auch mehrere Router an denselben Service hängen:
labels:
- "traefik.http.routers.myapp1.rule=Host(`example.com`)"
- "traefik.http.routers.myapp2.rule=Host(`alt.example.net`)"
- "traefik.http.services.myapp.loadbalancer.server.port=80"
Damit erreichst du, dass ein Container unter mehreren Hostnamen erreichbar ist, entweder über eine gemeinsame Regel (mit ||) oder über mehrere Router mit identischem Service.