Трафики плохих шлюзов при использовании https - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь реализовать SSL с Traefik в Docker, но получаю ошибку «502 Bad Gateway» почти для всех контейнеров внутри (кроме Traefik и Prometheus). Даже при чистой установке у меня возникают те же проблемы, и яне имеют журналов ошибок для этих контейнеров (указывающих на то, что они должны работать нормально, и без использования Traefik они выглядят нормально). Что-то не так с тем, как я это реализовал? Или, может быть, я что-то неправильно понял в traefik?

Я проверил, доступны ли порты, добавлен ли субдомен в облачный DNS и что службы и сети работают и работают. Я также попытался перезапустить контейнеры. Все сервисы доступны без прохождения через Traefik (вход в порт напрямую по URL)

(переменная X_SERVER находится в файле .env, она разрешается в такие переменные, как: grafana.mywebsite.com)

Вот мой docker-compose.yml:

version: '3'
networks:
 private:
 web:
  external:
   name: web
services:

# TRAEFIK
 traefik:
  image: traefik:maroilles-alpine
  ports:
   - "80:80"
   - "443:443"
   - "8200:8200"
  volumes:
   - /var/run/docker.sock:/var/run/docker.sock
   - ./config/traefik/acme:/etc/traefik/acme
   - ./config/traefik/traefik.toml:/etc/traefik/traefik.toml:ro
  networks:
   - web
  labels:
   - "traefik.enable=true"
   - "traefik.frontend.rule=Host:${TRAEFIK_SERVER}"
   - "traefik.port=8200"
   - "traefik.docker.network=web"
  restart: always

# PROMETHEUS
 prometheus:
  image: prom/prometheus:v2.0.0
  container_name: prometheus
  volumes:
   - ./docker/prometheus/:/etc/prometheus
   - prometheus-data:/prometheus
  command:
   - '--config.file=/etc/prometheus/prometheus.yml'
   - '--storage.tsdb.path=/prometheus'
   - '--web.console.libraries=/etc/prometheus/console_libraries'
   - '--web.console.templates=/etc/prometheus/consoles'
   - '--storage.tsdb.retention=200h'
  ports:
   - "9090:9090"
  depends_on:
   - cadvisor
  networks:
   - web
   - private
  labels:
   - "traefik.enable=true"
   - "traefik.frontend.rule=Host:${PROMETHEUS_SERVER}"
   - "traefik.port=9090"
   - "traefik.docker.network=web"
  restart: always

# CADVISOR
 cadvisor:
  image: google/cadvisor
  container_name: cadvisor
  volumes:
   - /:/rootfs:ro
   - /var/run:/var/run:rw
   - /sys:/sys:ro
   - /var/lib/docker/:/var/lib/docker:ro
  ports:
   - "8463:8080"
  networks:
   - private
  labels:
   - "traefik.enable=true"
   - "traefik.frontend.rule=Host:${CADVISOR_SERVER}"
   - "traefik.port=8463"
   - "traefik.docker.network=web"
  restart: always

# GRAFANA
grafana:
  image: grafana/grafana:4.6.2
  environment:
   - GF_SERVER_ROOT_URL=${GRAFANA_SERVER}
  container_name: grafana
  volumes:
   - grafana-data:/var/lib/grafana
  ports:
   - "3155:3000"
  networks:
   - web
   - private
  labels:
   - "traefik.enable=true"
   - "traefik.frontend.rule=Host:(GRAFANA_SERVER}"
   - "traefik.port=3155"
   - "traefik.docker.network=web"
  restart: always

volumes:
 prometheus-data: {}
 grafana-data: {}

Вот мой traefik.toml:

debug = true
logLevel = "DEBUG"
defaultEntryPoints = ["https","http"]
[web]
address = ":8200"
[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"
  [entryPoints.https]
  address = ":443"
  [entryPoints.https.tls]
[retry]
[acme]
email = "my.awesome@email.com"
storageFile = "/etc/traefik/acme/acme.json"
entryPoint = "https"
onHostRule = true
  [acme.httpChallenge]
  entryPoint = "http"
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "mywebsite.com"
watch = true
exposedByDefault = false

Я ожидал, что все мои страницы будут доступны при использовании HTTPS,проходит через Traefik, но вместо этого некоторые из них показывают ошибку 502 Bad Gateway (например, Grafana), другие работают, как и ожидалось (Prometheus, Traefik), некоторые даже недоступны (apache). Если я не использую Traefik (и, таким образом, получаю доступ напрямую через правильный порт, например: http://mywebsite.com:3155), страница отображается правильно, но она не защищена и не использует Traefik

...