web-dev-qa-db-fra.com

Trafik - Multiples liaisons de port pour le même hôte v2

Je ne peux pas comprendre comment obtenir un service simple accessible par HTTP et HTTPS sur localhost. Ceci est ma configuration jusqu'à présent et j'utilise Trafik v2.xxx.

Je souhaite pouvoir frapper ce site à l'aide des protocoles HTTPS/HTTP (pour des raisons de Dev Machines uniquement). Le HTTPS fonctionne bien, mais http ne le fait pas. Quelles étiquettes dois-je ajouter/supprimer/changer?

http: //whoami.localhost: 8000 /
[.____] https: //whoami.localhost: 8443 /

docker-compose.yml

version: "3.7"

services:

  whoami:
    image: containous/whoami
    labels:
      - traefik.enable=true
      - traefik.http.routers.whoami.rule=Host(`whoami.localhost`)
      - traefik.http.routers.whoami.entrypoints=web,web-secure
      - traefik.http.routers.whoami.tls=true
      - traefik.protocol=http,https

  reverse-proxy:
    depends_on:
      - whoami
    image: traefik:v2.1.1
    ports:
      - 8000:80
      - 8443:443
      - 8001:8080
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik:/etc/traefik:ro

Trafik/Trafik.Toml

[log]
  level = "DEBUG"

[accessLog]
  filePath = "/logs/access.log"
  bufferingSize = 20

[docker]
  exposedbydefault = false

[api]
  dashboard = true
  insecure = true

[providers]
  [providers.file]
    filename = "/etc/traefik/traefik.toml"
    watch = true

  [providers.docker]
    exposedbydefault = false

[[tls.certificates]]
  certFile = "/etc/traefik/certs/localhost-cert.pem"
  keyFile = "/etc/traefik/certs/localhost-key.pem"

[entryPoints]
  [entryPoints.web]
    address = ":80"

  [entryPoints.web-secure]
    address = ":443"

c:\windows\system32\pilotes\etc\hosts

127.0.0.1 whoami.localhost
4
TugboatCaptain

En fait, tout ce dont vous avez besoin, vous trouverez 3 étiquettes, tant que vous avez par défaut sur TLS pour le fichier d'entrée WebSécure.

docker-compose.yml

version: "3.7"

services:

  whoami:
    image: containous/whoami
    labels:
      - traefik.enable=true
      - traefik.http.routers.whoami.rule=Host(`whoami.localhost`)
      - traefik.http.services.whoami.loadbalancer.port=80

  reverse-proxy:
    image: traefik:v2.1.1
    ports:
      - 8000:80
      - 8443:443
      - 8001:8080
    command: --entrypoints.web-secure.http.tls=true
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik:/etc/traefik:ro
1
Chris Becke

C'est comme ça que je le fais, en commençant par mon docker composant fichier:

# docker-compose.yml

version: '3.7'

services:
  whoami:
    image: containous/whoami
    labels:
      - traefik.enable=true
      - traefik.http.routers.whoami.entryPoints=web
      - traefik.http.routers.whoami.rule=Host(`localhost`)
      - traefik.http.routers.whoami-secured.entryPoints=web-secure
      - traefik.http.routers.whoami-secured.rule=Host(`localhost`)
      - traefik.http.routers.whoami-secured.tls=true

  proxy:
    image: traefik:2.4
    ports:
      - '80:80'
      - '443:443'
      - '8080:8080'
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./docker/proxy/traefik.yml:/etc/traefik/traefik.yml
      - ./docker/proxy/dynamic_config.yml:/etc/traefik/dynamic_config.yml
      - ./docker/proxy/certs/server.crt:/etc/ssl/server.crt
      - ./docker/proxy/certs/server.key:/etc/ssl/server.key

Suivant est mon fichier de configuration statique où je définit mes points d'entrée (entre autres):

# ./docker/proxy/traefik.yml

api:
  insecure: true

entryPoints:
  web:
    address: :80
    http:
      redirections:
        entryPoint:
          to: web-secure
          scheme: https

  web-secure:
    address: :443

log:
  level: INFO

providers:
  docker:
    exposedByDefault: false

  file:
    filename: /etc/traefik/dynamic_config.yml

Le fichier de configuration dynamique est l'endroit où je configure les certificats SSL. (Ce sont des certificats auto-signés.):

# ./docker/proxy/dynamic_config.yml

tls:
  certificates:
    - certFile: /etc/ssl/server.crt
      keyFile: /etc/ssl/server.key

J'avais l'habitude d'utiliser Middleware pour gérer la redirection sécurisée - que j'ai également eu dans ce fichier - jusqu'à ce que je sois trébuché sur la configuration ci-dessus, ce qui le définit dans le cadre du point d'entrée.

0
partydrone