首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Traefik Bad网关

Traefik Bad网关
EN

Stack Overflow用户
提问于 2018-03-21 12:48:18
回答 9查看 49.5K关注 0票数 11

我有个奇怪的问题。我有以下设置:一个码头-主机运行traefik作为LB服务多个网站。站点是大多数php/apache。HTTPS由traefik管理。每个站点都使用包含以下内容的docker-compose启动:

代码语言:javascript
复制
version: '2.3'
services:
  redis:
    image: redis:alpine
    container_name: ${PROJECT}-redis
    networks:
      - internal
  php:
    image: registry.gitlab.com/OUR_NAMESPACE/docker/php:${PHP_IMAGE_TAG}
    environment:
      - APACHE_DOCUMENT_ROOT=${APACHE_DOCUMENT_ROOT}
    container_name: ${PROJECT}-php-fpm
    volumes:
       - ${PROJECT_PATH}:/var/www/html:cached
       - .docker/php/php-ini-overrides.ini:/usr/local/etc/php/conf.d/99-overrides.ini
    ports:
      - 80
    networks:
      - proxy
      - internal
    labels:
      - traefik.enable=true
      - traefik.port=80
      - traefik.frontend.headers.SSLRedirect=false
      - traefik.frontend.rule=Host:${PROJECT}
      - "traefik.docker.network=proxy"

networks:
  proxy:
    external:
      name: proxy
  internal:

(作为PHP,我们使用5.6.33-apache-jessie或7.1.12-ApacheF.E.)

除了上面的内容外,一些网站还获得了以下标签:

代码语言:javascript
复制
traefik.docker.network=proxy
traefik.enable=true
traefik.frontend.headers.SSLRedirect=true
traefik.frontend.rule=Host:example.com, www.example.com
traefik.port=80
traefik.protocol=http

我们得到的是,某些请求以502 Bad Gateway traefik调试输出结束,显示:

代码语言:javascript
复制
time="2018-03-21T12:20:21Z" level=debug msg="vulcand/oxy/forward/http: Round trip: http://172.18.0.8:80, code: 502, Length: 11, duration: 2.516057159s"

有人能帮忙吗?当它发生在我们的traefik.toml时是完全随机的:

代码语言:javascript
复制
debug = true
checkNewVersion = true
logLevel = "DEBUG"

defaultEntryPoints = ["https", "http"]
[accessLog]

[web]
address = ":8080"

[web.auth.digest]
users = ["admin:traefik:some-encoded-pass"]

[entryPoints]
  [entryPoints.http]
  address = ":80"
#    [entryPoints.http.redirect] # had to disable this because HTTPS must be enable manually (not my decission)
#      entryPoint = "https"
  [entryPoints.https]
  address = ":443"
    [entryPoints.https.tls]


[retry]

[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "example.com"
watch = true
exposedbydefault = false


[acme]
email = "info@example.com"
storage = "acme.json"
entryPoint = "https"
onHostRule = true

[acme.httpChallenge]
entryPoint = "http"

这个问题是否与使用相同的对接者-Compose.yml有关?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2018-03-21 23:33:24

对于任何有同样问题的人来说:

在重新创建网络(代理)并重新启动每个站点/容器之后,它现在似乎可以工作了。我还是不知道问题出在哪里。

票数 14
EN

Stack Overflow用户

发布于 2021-05-25 08:39:54

另一个原因可能是您可能意外地映射到vm的端口而不是容器端口。

我更改了我的端口映射在docker-组合文件上,忘记更新标记端口,所以它试图映射到机器上没有任何进程连接的端口。

错误的方向:

代码语言:javascript
复制
ports:
  - "8080:8081"
labels:
  - "traefik.http.services.front-web.loadbalancer.server.port=8080"

右路

代码语言:javascript
复制
ports:
  - "8080:8081"
labels:
  - "traefik.http.services.front-web.loadbalancer.server.port=8081"

此外,通常不要这样做,而不是公开端口尝试码头网络,他们是更好和更干净。我在一年前就做了我的配置文档,这在我看来更像是一个初学者的错误,但可能会对某人有所帮助:)

票数 13
EN

Stack Overflow用户

发布于 2019-10-02 13:35:16

如果您看到Bad Gateway与Traefik,很可能您有一个码头网络问题。首先看一看本期,然后考虑这个解决方案。然后看看providers.docker.network (Traefik2.0),或者,在您的例子中,docker.network设置(Traefik1.7)。

您可以在这里添加一个默认的network

代码语言:javascript
复制
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "example.com"
watch = true
exposedbydefault = false
network = "proxy"

或者使用traefik.docker.network标签为给定的服务定义/重写它。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49406737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档