Вам не нужно настраивать сам сервис Traefik. В Traefik вам нужно иметь только точки входа в: 443 (web-secure) и: 80 (web)
Поскольку Traefik действует только как entryPoint и не будет выполнять перенаправление, промежуточное программное обеспечение в целевой службе сделает это.
Теперь настройте вашу целевую службу следующим образом:
version: '2'
services:
mywebserver:
image: 'httpd:alpine'
container_name: mywebserver
labels:
- traefik.enable=true
- traefik.http.middlewares.mywebserver-redirect-web-secure.redirectscheme.scheme=https
- traefik.http.routers.mywebserver-web.middlewares=mywebserver-redirect-web-secure
- traefik.http.routers.mywebserver-web.rule=Host(`sub.domain.com`)
- traefik.http.routers.mywebserver-web.entrypoints=web
- traefik.http.routers.mywebserver-web-secure.rule=Host(`sub.domain.com`)
- traefik.http.routers.mywebserver-web-secure.tls.certresolver=mytlschallenge
- traefik.http.routers.mywebserver-web-secure.tls=true
- traefik.http.routers.mywebserver-web-secure.entrypoints=web-secure
# if you have multiple ports exposed on the service, specify port in the web-secure service
- traefik.http.services.mywebserver-web-secure.loadbalancer.server.port=9000
Таким образом, в основном процесс выглядит так:
Запрос: http://sub.domain.com:80 ->traefik (служба) -> mywebserver-web (маршрутизатор, правило http) -> mywebserver-redirect-web-secure (промежуточное ПО, перенаправление на https) -> mywebserver-web-secure (маршрутизатор, правило https) ->mywebserver (сервис)