You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx Ingress子路径暴露Grafana失败:无法加载应用文件求助

在Nginx Ingress子路径下暴露Grafana加载失败的原因及解决方法

核心问题拆解

出现"If you're seeing this Grafana has failed to load its application files"错误,本质是Grafana静态资源请求路径不匹配,或者Ingress转发逻辑错误,结合你用的helm版本,具体原因如下:

1. Grafana根路径配置缺失

kube-prometheus-stack的values.yaml里,必须同时设置root_url和serve_from_subpath两个参数。比如你要通过/grafana子路径访问,需添加:

grafana:
  grafana.ini:
    server:
      root_url: "%(protocol)s://%(domain)s:/grafana/"
      serve_from_subpath: true

没开serve_from_subpath: true的话,Grafana会把静态资源请求指向根路径(比如/static/js/app.xxx.js),而非子路径下的/grafana/static/js/app.xxx.js,直接导致404。

2. Ingress路径重写配置错误

ingress-nginx需要正确配置路径转发规则,确保/grafana/*的请求能正确映射到Grafana服务的根路径。在kube-prometheus-stack的values里需配置:

grafana:
  ingress:
    enabled: true
    path: /grafana(/|$)(.*)
    pathType: Prefix
    annotations:
      nginx.ingress.kubernetes.io/rewrite-target: /$2
      nginx.ingress.kubernetes.io/use-regex: "true"
      nginx.ingress.kubernetes.io/configuration-snippet: |
        proxy_set_header X-Forwarded-Prefix /grafana;

缺少rewrite-target和正则路径的话,Ingress会把完整的/grafana路径传给Grafana,而Grafana默认监听根路径,自然找不到对应资源。

3. Helm版本适配问题

你用的kube-prometheus-stack-41.7.3对应的Grafana版本对serve_from_subpath的依赖更严格,必须明确开启。另外ingress-nginx-4.3.0的正则分组规则要和rewrite-target匹配,比如路径/grafana(/|$)(.*)对应/$2,不能写错分组序号。

4. 浏览器缓存干扰

浏览器可能缓存了旧的静态资源路径,即使配置正确也会加载失败。直接清缓存或者用隐身模式访问测试即可排除。

快速验证方法

  • 查看Grafana pod日志,搜是否有静态资源的404请求记录
  • 进入Grafana pod,检查/etc/grafana/grafana.ini里的root_url和serve_from_subpath配置是否生效
  • 用kubectl describe ingress <grafana-ingress-name>查看Ingress规则和注解是否正确

内容的提问来源于stack exchange,提问作者J-Are

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 14:30:56