Docker Traefik后端运行状况检查不工作

Docker Traefik后端运行状况检查不工作,docker,traefik,Docker,Traefik,Traefik版本:1.6.4 我的公司使用Docker Swarm将应用程序表示为服务,使用Traefik进行路由。到目前为止,一切都很正常,但我们在Traefik中实现后端健康检查时遇到了问题 我们所有的应用程序都公开了一个健康检查,它工作正常,通过简单的卷曲或在web浏览器中点击返回200。我们已将Docker标签应用于swarm服务,以反映这些健康检查。例如: traefik.backend.healthcheck.path=/health traefik.backend.healthc

Traefik版本:1.6.4

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

我们所有的应用程序都公开了一个健康检查,它工作正常,通过简单的卷曲或在web浏览器中点击返回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-khttps://10.0.0.x:8080/health
在Traefik 1.7中,有一个选项可以添加自定义标头,并为后端healthcheck定义主机标头:

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

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