Я пытаюсь объявить перенаправление https внутри файла traefik.yml
. Сейчас я попытался добавить эти правила в сервис traefik в docker-compose.yml
. Это сработало как шарм. Хотя я бы предпочел настроить это глобальное и промежуточное перенаправление в файле traefik.yml
, а затем просто сослаться на него в сервисе traefik на docker-compose.yml
.
То, что у меня было до
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"
Это сработало легко и перенаправило все остальные домены с http на https.
Что я хочу сейчас
Я хочу объявить эти перенаправления внутри traefik.yml
.
Пока я сделал это.
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
Как вы можете видеть, я объявил настройки http.
Теперь у меня вопрос, как я могу ссылаться на эти настройки в моей службе traefik?
Я попробовал это с
- "traefik.http.middlewares=redirect-to-https"
- "traefik.http.middlewares.redirect-to-https"
- "traefik.http.middlewares.traefik=redirect-to-https@file"
Ни один из них не работает. Некоторые показывают промежуточное ПО на панели инструментов, но оно не связано ни с какими настройками.
Кто-нибудь нашел решение для этого? Я не могу ничего узнать из документации по этому поводу. Я думаю, что это должно быть как-то связано с @file.
Спасибо