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
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
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.