我已经用Docker及其背后的服务设置了Traefik。基本设置有效。我可以使用重定向到https的域名浏览到端口80,然后看到“无效的证书”,因为我们的加密部分已损坏。
[路由器] <-:80 /:443-> [linux / docker [Traefik:80 /:443] [Service:8080]]
这是日志(已编辑域)中的条目。
日志:
acme:错误->一个或多个域出现问题:\ n [xyz.example.net] acme:错误:400 :: urn:ietf:params:acme:error:connection ::获取 http://xyz.example.net/.well-known/acme-challenge/eIAFZqaGMHMWaBjINjzk4m8PuWiYfuCHCTnSU9M: 获取验证数据时出错,URL:\ n“
该错误消息是准确的,我无法浏览到该URL。我注意到我可以使用内部IP http://10.0.0.21/.well-known/acme-challenge/key
转到该URL,Traefik在日志中对此进行响应:
traefik | time =“ 2019-05-28T21:20:52Z” level = error msg =“在542.914495ms内重试令牌时遇到错误”
我怀疑问题是域名重定向设置。我的服务位于xyz.example.net(Traefik也是如此)。我怀疑问题是Traefik将xyz.example.net:80/:443
上传入的所有流量重定向到该服务,而不是处理./well-known/acme-challenge
本身。我需要给网关本身起个名字吗? (例如zzz.example.net
是Traefik,xyz.example.net
是服务吗?)
我该如何解决?
我的TOML文件:
debug = false
logLevel = "ERROR" #DEBUG, INFO, WARN, ERROR, FATAL, PANIC
InsecureSkipVerify = true
defaultEntryPoints = ["https", "http"]
[entryPoints]
[entryPoints.http]
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[retry]
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "example.net"
watch = true
exposedbydefault = false
[acme]
email = "me@example.net"
storage = "acme.json"
entryPoint = "https"
onDemand = false
onHostRule = true
[acme.httpChallenge]
entryPoint = "http"
答案 0 :(得分:0)
我注意到,尽管内部IP 192.xxx有效,但外部IP没有起作用。当然,我想说的是,这似乎是一个防火墙问题-但是-防火墙可以让流量恰好适合我正在测试的服务,所以我很困惑。
解决方案? 端口80未在防火墙上转发,端口443已转发。因此,当我尝试使用curl / browser进行测试时,我输入了https://xyz.example.com-可以正常工作。