Traefik: Простое переадресация HTTPS-протокола Letsencrypt на службу whoami выдает «404 страница не найдена» - PullRequest
0 голосов
/ 08 февраля 2019

Я пытался запустить его в течение двух дней, и некоторое простое перенаправление HTTP -> HTTP не работает!: (

Довольно простой вариант использования:

whoami.my-example-domain.com: 80 => перенаправить на whoami.my-example-domain.com:443, а затем traefik внутренне перенаправляетк: 80 моего докерского контейнера службы whoami.

Вот docker-compose.yml

version: "3"
services:
  reverse-proxy:
image: traefik:alpine
command:
  - --logLevel=WARN
  - --defaultentrypoints=http,https
  - --entrypoints=Name:http Address::80 Redirect.EntryPoint:https
  - --entrypoints=Name:https Address::443 TLS
  - --acme
  - --acme.email=myemail@gmail.com
  - --acme.storage=acme.json
  - --acme.entryPoint=https
  - --acme.httpChallenge.entryPoint=http
  - --acme.OnHostRule=true
  - --acme.onDemand=false
  - --acme.acmeLogging=true
  - --docker
  - --docker.watch
  - --docker.exposedbydefault=false
  - --docker.domain=docker.localhost
restart: always
networks:
  - web
ports:
  - "80:80"     # The HTTP port
  - "443:443"   # The HTTPS port
volumes:
  - /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
  - /opt/data/traefik/acme.json:/acme.json
  whoami:
image: containous/whoami  # A container that exposes an API to show its IP address
labels:
  - "traefik.enable=true"
  - "traefik.frontend.rule=Host:whoami.some-example-domain.com"
  - "traefik.port=80"
  - "traefik.frontend.entryPoints=http"
networks:
  web:
    external: true

Когда я сейчас звоню http://whoami.some -example-domain.com (это всего лишь демонстрационный домен, и он не будет работать) => он перенаправляет на HTTP ... что круто, но затем выдает знаменитую стандартную ошибку "404 страница не найдена" traefik.

Еслиуже пытался установить следующие метки для контейнера:

  • "traefik.port = 80"
  • "traefik.frontend.entryPoints = http"

Это тоже не сработало.

Любая помощь будет признательна! Заранее спасибо!

С уважением,

Саша

1 Ответ

0 голосов
/ 08 февраля 2019

Вы должны удалить traefik.frontend.entryPoints (связанный с defaultentrypoints) или использовать traefik.frontend.entryPoints=http,https

version: "3"

services:
  reverse-proxy:
    image: traefik:v1.7.8
    command:
      - --logLevel=WARN
      - --defaultentrypoints=http,https
      - --entrypoints=Name:http Address::80 Redirect.EntryPoint:https
      - --entrypoints=Name:https Address::443 TLS
      - --acme
      - --acme.email=myemail@gmail.com
      - --acme.storage=acme.json
      - --acme.entryPoint=https
      - --acme.httpChallenge.entryPoint=http
      - --acme.OnHostRule=true
      - --acme.onDemand=false
      - --acme.acmeLogging=true
      - --docker
      - --docker.exposedbydefault=false
      - --docker.domain=some-example-domain.com
    restart: always
    networks:
      - web
    ports:
      - "80:80"     # The HTTP port
      - "443:443"   # The HTTPS port
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
      - /opt/data/traefik/acme.json:/acme.json
  whoami:
    image: containous/whoami  # A container that exposes an API to show its IP address
    labels:
      - "traefik.enable=true"
      - "traefik.frontend.rule=Host:some-example-domain.com"
    networks:
     - web

networks:
  web:
    external: true
...