Используйте промежуточное программное обеспечение traefik во всем мире - PullRequest
1 голос
/ 27 января 2020

Я пытаюсь объявить перенаправление 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.

Спасибо

...