【问题标题】:Traefik backend health checks not workingTraefik 后端运行状况检查不起作用
【发布时间】:2018-07-11 14:13:26
【问题描述】:

Traefik 版本:1.6.4

我的公司使用 Docker Swarm 将应用程序呈现为服务,使用 Traefik 进行路由。到目前为止一切正常,但我们在 Traefik 中实施后端健康检查时遇到了问题。

我们所有的应用程序都公开了一个健康检查,它运行良好,并通过简单的 curl 或在网络浏览器中点击它返回 200。我们已将 Docker 标签应用于我们的 swarm 服务以反映这些健康检查。举个例子:

traefik.backend.healthcheck.path=/health
traefik.backend.healthcheck.interval=30s

Traefik 服务日志报告如下:

{"level":"warning","msg":"Health check still failing. Backend: \"backend-for-my-app\" URL: \"https://10.0.0.x:8080\" Reason: received non-200 status code: 406","time":"2018-07-10T19:41:25Z"}

在应用容器中,我们使用 ModSecurity 运行 Apache。 ModSecurity 正在阻止请求,因为主机标头是数字 IP 地址。我进入 Traefik 容器并在应用程序容器上做了几个卷曲以进行测试:

curl -k https://10.0.0.x:8080/health curl -k -H "Host: myapp.company.com" https://10.0.0.x:8080/health

TLDR:我需要一种方法来为 Traefik 后端运行状况检查设置主机标头。在 Traefik 文档中,我没有看到这样做的方法。有没有人遇到过这个问题,和/或知道解决方案?

【问题讨论】:

    标签: docker traefik


    【解决方案1】:

    在 Traefik 1.7 中,有一个选项可以添加自定义标头,并为后端健康检查定义主机标头:

    https://docs.traefik.io/v1.7/configuration/backends/docker/

    例如traefik.backend.healthcheck.hostname=foobar.com

    请注意,1.7 仍在 RC 中,但您可以对其进行测试,看看它是否能解决您的问题。如果您在生产中需要此功能,则必须等待 1.7 达到稳定状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-28
      • 1970-01-01
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多