【问题标题】:Traefik bad gateways when using https使用 https 时的 Traefik 错误网关
【发布时间】:2019-10-29 16:49:02
【问题描述】:

我正在尝试在 Docker 中使用 Traefik 实现 SSL,但对于其中的几乎每个容器(Traefik 和 Prometheus 除外),我都收到错误“502 Bad Gateway” 即使在全新安装时,我也有同样的问题,并且我没有这些容器的错误日志(表明它们应该运行良好,并且不使用 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),有些甚至无法访问(阿帕奇)。 如果我不使用 Traefik(因此,直接通过正确的端口访问,例如:http://mywebsite.com:3155)页面显示正确,但它不安全且不使用 Traefik

【问题讨论】:

    标签: docker https docker-compose traefik


    【解决方案1】:

    找到了解决办法, 需要在端口中删除所有端口: traefik 中的端口绑定必须与原始端口相同(例如:grafana 为 3155) 现在我的大部分容器除了 Phpmyadmin(不能改变这个的监听端口,它卡住了)都可用

    【讨论】:

      猜你喜欢
      • 2021-07-21
      • 2019-08-19
      • 2018-10-26
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多