【发布时间】: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 文档中,我没有看到这样做的方法。有没有人遇到过这个问题,和/或知道解决方案?
【问题讨论】: