Docker Traefik启动报错:httpChallenge键已重复定义
解决Traefik启动报错:httpChallenge已定义的问题
报错原因
你的Traefik配置文件中重复定义了httpChallenge:在[certificatesResolvers.myResolver.acme]区块下,既写了httpChallenge = true的简写配置,又通过[certificatesResolvers.myResolver.acme.httpChallenge]块配置了entryPoint,TOML解析器会判定这是同一个键重复定义,导致容器启动失败。
修复步骤
修改traefik.toml配置文件
删除[certificatesResolvers.myResolver.acme]下的httpChallenge = true这一行,保留块配置即可。修改后的完整配置如下:[entryPoints] [entryPoints.web] address = ":80" [entryPoints.web.http] [entryPoints.web.http.redirections] [entryPoints.web.http.redirections.entryPoint] to = "websecure" scheme = "https" [entryPoints.websecure] address = ":443" [api] dashboard = true [providers.docker] endpoint = "unix:///var/run/docker.sock" [certificatesResolvers.myResolver.acme] email = "myMail@gmail.com" storage = "acme.json" [certificatesResolvers.myResolver.acme.httpChallenge] entryPoint = "web"重启Traefik容器
执行命令重启容器:docker-compose down && docker-compose up -d验证启动状态
查看容器日志确认是否正常启动:docker logs reverse-proxy
说明
Traefik v2.x中,配置ACME HTTP挑战时,若需要指定entryPoint等额外参数,仅需使用块配置[certificatesResolvers.xxx.acme.httpChallenge]即可,无需额外添加httpChallenge = true——后者是启用挑战的简写形式,与块配置同时存在会触发TOML的重复键错误。
内容的提问来源于stack exchange,提问作者Kenyuki
相关产品推荐
相关产品推荐

