Nginx反向代理Grafana时静态资源加载失败求助
解决Nginx反向代理后Grafana静态资源路径错误的问题
我之前也碰到过这个一模一样的坑!从你的Nginx日志能看得出来,问题核心是Grafana生成的静态资源路径没有带上/grafana子路径,导致Nginx去自己的默认静态目录(/usr/share/nginx/html)里找这些资源,自然找不到。咱们一步步来修复:
1. 修正Grafana的grafana.ini配置
你需要确保Grafana知道自己运行在/grafana子路径下,调整以下两个关键配置:
# 保持域名配置不变 domain = PUBLIC_IP # 确保root_url末尾带斜杠,明确子路径 root_url = https://PUBLIC_IP/grafana/ # 开启这个选项,让Grafana自动给所有静态资源加上子路径前缀 serve_from_sub_path = true
注意:
serve_from_sub_path这个配置默认是关闭的,这是导致静态资源路径缺失前缀的关键原因!
2. 优化Nginx反向代理配置
虽然你的基础配置没问题,但加上必要的代理头能让Grafana更准确地识别请求环境,避免后续可能的其他问题。更新后的nginx.conf对应块如下:
server { listen 443 ssl; server_name PUBLIC_IP; ssl_certificate /etc/nginx/cert.crt; ssl_certificate_key /etc/nginx/cert.key; ssl on; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location /grafana/ { proxy_pass http://IP_WHERE_LIVES_GRAFANA:30000/; # 添加这些代理头,让Grafana正确识别请求信息 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
3. 重启服务验证
- 在Kubernetes集群中重启Grafana的Pod,让新的配置生效
- 在Nginx所在虚拟机执行
systemctl restart nginx(如果是容器部署就重启Nginx容器)
之后再访问https://PUBLIC_IP/grafana/,你会发现静态资源都能正常加载,不会再出现{{alert.title}}的错误了。
内容的提问来源于stack exchange,提问作者Oles Rid
相关产品推荐
相关产品推荐

