【发布时间】:2020-01-27 12:54:35
【问题描述】:
以下问题更新!
我最近几天设置了 traefik,它似乎对 docker 容器非常有用。不起作用的是设置非 docker 后端。我在主机的 19999 端口上运行了一个 netdata 仪表板 (https://github.com/netdata/netdata)。
我已经定义了一个文件提供者:
[providers.file]
directory = "/home/myname/traefik"
filename = "providers.toml"
watch = true
我在哪里为我的 netdata 仪表板定义了服务和路由器:
[http.routers]
[http.routers.netdata]
service = "netdata"
middlewares = ["replacepath"]
rule = "Host(`my.host.name`) && Path(`/netdata`)"
[http.middlewares]
[http.middlewares.replacepath.replacePath]
path = "/"
[http.services]
[http.services.netdata]
[http.services.netdata.loadBalancer]
[[http.services.netdata.loadBalancer.servers]]
url = "http://192.168.178.60:19999/" ---> my server local ip
我使用 replacepath 去除路径,这样我就不会在更下方的一个目录中结束,该目录不存在。
但是,当我访问 http://my.host.name/netdata 时,它看起来只为我提供原始 html,我得到 .css 和 .js 内容的 404。
我必须做些什么才能使网站目录中的所有文件都交付?我觉得有一个简单的解决方案,我现在看不到......
我发现了几个使用旧 traefik 版本的教程,它们使用前端和后端,据我了解,这些正在被路由器、中间件和服务所取代。
- 我尝试使用“http://localhost:19999”而不是我的本地 ip,但没有成功(导致网关错误)
- 我还尝试将 traefik 容器设置为网络“主机”,因为容器应该与主机的其余部分隔离,因此 traefik 无法与 netdata 服务器通信,但正如我所说,我至少得到了网站的一部分,所以这不是问题吗?
更新 #1,20 年 1 月 30 日:
经过更多尝试和失败的尝试使其与 nginx 一起工作后,我意识到不是代理本身是这里的问题。我注意到我在根级别运行的任何服务(因此,不是 traefik 中的路径规则,或 nginx 中的location /)它可以工作,但其他所有获得路径/位置的服务都被破坏或根本不工作。我想通过路由代理的一项服务是来自我的 homebridge (https://github.com/nfarina/homebridge) 的仪表板——但 Angular 似乎在自定义路径方面遇到了麻烦。我的 netdata 仪表板或我的 onionbox 状态站点也存在同样的问题。我将这个问题悬而未决,也许有人找到了一种(hacky)让它工作的方法。
【问题讨论】: