为什么 Grafana 在某些链接的 URL 内加倍子页面?

Why does Grafana double the sub-page within the URL on certain links?

我通过 Rancher Monitoring operator 在 Kubernetes 下使用 Grafana 7.1.5,通过 Nginx 入口控制器和 /grafana-metrics 的子页面公开它。 https://DNSNAME:PORT/grafana-metrics/ 成功检索到顶部带有“欢迎使用 Grafana”横幅且上面有许多仪表板的页面。

页面上的大部分链接都有效,例如左侧边栏顶部的 Grafana 图标、左侧边栏中的搜索图标以及主面板左上方的主页图标(在Grafana 图标,但不在左侧边栏上)。但是,左侧边栏上的仪表板图标以及该图标显示的弹出式菜单上的所有图标都包含 URL,其中包含子页面 (/grafana-metrics) 两次,例如 https://DNSNAME:PORT/grafana-metrics/grafana-metrics/dashboards。这些元素的页面源将 URL 简单地列为 ./grafana-metrics/dashboards 或类似内容,因此使用包含子路径的相对 URL 似乎是导致重复的原因,但是我不确定该包含是否代表我的配置错误或 Grafana 代码中的错误。

我已经按照 https://grafana.com/tutorials/run-grafana-behind-a-proxy/ 中的描述配置了从子路径后面为 Grafana 提供服务的设置,包括与该页面上的模式匹配的 root_urlserve_from_sub_path = true,以及尽管我可以看到如果删除这些设置,Grafana 将无法完全加载,但我没有看到它在启用时从相对 URL 中删除子路径。我还发现设置或省略 domain 属性 在行为上没有区别。

任何人都可以说明这是否是我尚未找到要控制的设置的预期行为,或者它是否是我需要向 Grafana 团队提交错误报告的错误?

很高兴我发现了这个问题,因为我们已经遇到了这个问题,我以为我快疯了,因为找不到关于这个的信息。

我认为问题在于 Rancher。监控操作员部署了一个内部 nginx 容器,作为 Grafana 的反向代理,“grafana-proxy”,“rancher-monitoring-grafana”部署的一部分。该 nginx 容器重写了响应主体:

sub_filter '"url":"/' '"url":"./';

这重写了来自 Grafana 的“navTree”JSON,并将“/grafana-metrics/dashboards”重写为“./grafana-metrics/dashboards”,这与 <base href="/grafana-metrics" /> 结合导致链接中重复的上下文路径。

我还没有适合您的解决方案,我们仍在寻求 Rancher 的支持,但我已经将此发布给偶然发现此问题的其他人。