Traefik | Hostnamen zu bestehenden Router hinzufügen

Traefik | Hostnamen zu bestehenden Router hinzufügen
Photo by Melyna Valle / Unsplash

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.

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.

Read more