如何在文件后端使用X-Forwarded-Prefix

时间:2018-10-17 10:11:03

标签: http-headers reverse-proxy grafana traefik

我正在尝试使用文件后端配置traefik,以联系LXC容器中的grafana服务器。

这是我的配置文件:

[file]
# rules
[backends]
  [backends.backend2.servers.server1]
     url = "http://192.168.255.250:3000"
[frontends]
  [frontends.frontend2]
    entryPoints = ["http"]
    backend = "backend2"
    passHostHeader = true
      [frontends.frontend2.routes]
      [frontends.frontend2.routes.route0]
        rule = "PathPrefixStrip: /grafana"

Grafana后端监听/

因此,我可以联系http://example.com/grafana,但是我无法重定向到http://example.com/login。但是http://example.com/grafana/login响应(没有CSS,当然是因为grafana似乎使用相对URL)。

根据documentation

  

如果后端侦听根路径(/),但应在特定前缀上路由,请使用* Strip匹配器。例如,PathPrefixStrip:/ products可以匹配/ products,也可以匹配/ products / shoes和/ products / shirts。   由于路径是在转发之前剥离的,因此您的后端应侦听/。   如果您的后端正在提供资产(例如图像或Javascript文件),则它很可能必须返回正确构造的相对URL。   继续该示例,后端应返回/products/shoes/image.png(而不是/images.png,Traefik可能无法将其与同一后端关联)。   可以查询X-Forwarded-Prefix标头(自Traefik 1.3起可用)以动态构建此类URL。

似乎我必须使用X-Forwarded-Prefix标头,但我不知道如何使用它(我在文档中没有看到任何内容)。也许您可以帮助我解决这个问题?

致谢

jmc

1 个答案:

答案 0 :(得分:0)

实际上,问题并非来自traefik。我只是忘记在/etc/grafana.ini(root_url字段)中指定路径。我认为这没有必要,因为传入查询不包含路径/ grafana(因为我们使用PathPrefixStrip)。但实际上,grafana需要它来向客户指示有效的网址。

致谢。

jmc