J'essaie de déclarer une redirection https à l'intérieur de l'interface utilisateur. traefik.yml
fichier. Pour l'instant, j'ai essayé d'ajouter ces règles dans le fichier traefik service en docker-compose.yml
. Cela a marché comme sur des roulettes. Bien que je préférerais configurer cette redirection globale et middleware à l'intérieur de l'interface de l'utilisateur. traefik.yml
et ensuite le référencer dans le service traefik sur docker-compose.yml
.
Ce que j'avais avant
version: '3'
networks:
web:
external: true
services:
traefik:
image: traefik:v2.1
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./.traefik/traefik.yml:/traefik.yml
- ./.traefik/acme.json:/acme.json
networks:
- web
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.rule=Host(`$HOSTNAME`)"
- "traefik.http.routers.traefik.service=api@internal"
- "traefik.http.routers.traefik.tls.certresolver=le"
- "traefik.http.routers.traefik.entrypoints=https"
# Global redirect to https
- "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)"
- "traefik.http.routers.http-catchall.entrypoints=http"
- "traefik.http.routers.http-catchall.middlewares=redirect-to-https"
# Middleware redirect
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
Cela a fonctionné facilement et a redirigé tous les autres domaines de http à https.
Ce que je veux maintenant
Je veux déclarer ces redirections à l'intérieur du fichier traefik.yml
.
Jusqu'à présent, j'ai fait cela.
api: {}
entryPoints:
http:
address: ":80"
https:
address: ":443"
log:
level: DEBUG
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
network: web
http:
# Global redirect to https
routers:
http-catchall:
rule: hostregexp(`{host:.+}`)"
entrypoints:
http
middlewares:
- redirect-to-https
# Middleware redirect
middlewares:
redirect-to-https:
redirectScheme:
scheme: https
certificatesResolvers:
le:
acme:
email: john@doe.com
storage: acme.json
# Activate for Development: Certificate will not be valid. It's only for testing if it can be obtained.
#caServer: https://acme-staging-v02.api.letsencrypt.org/directory
httpChallenge:
entryPoint: http
Comme vous pouvez le voir, j'ai déclaré les paramètres http.
Ma question est maintenant comment puis-je référencer ces paramètres dans mon service traefik ?
Je l'ai essayé avec
- "traefik.http.middlewares=redirect-to-https"
- "traefik.http.middlewares.redirect-to-https"
- "traefik.http.middlewares.traefik=redirect-to-https@file"
Aucun d'entre eux ne fonctionne. Certains affichent l'intergiciel dans le tableau de bord, mais il n'est lié à aucun paramètre.
Quelqu'un a-t-il trouvé une solution à ce problème ? Je n'ai rien trouvé dans la documentation à ce sujet. Je pense que cela doit être lié d'une manière ou d'une autre à l'option @file .
Merci.