当前位置: 首页 > news >正文

Grafana 服务端怎么配置 Nginx 反向代理实现 HTTPS 访问?

最稳妥的做法是在 Grafana 前面部署 Nginx 负责 SSL 卸载,同时修改 Grafana 配置文件中的外部访问地址,让服务端知道请求是通过 HTTPS 进来的。

先说结论:通过 Nginx 反向代理处理 HTTPS 证书,并同步修正 Grafana 的 root_url 配置,避免重定向错误或资源加载失败。

  • 适合:已有 Nginx 环境或需要统一管理证书的生产场景
  • 先准备:有效的域名 SSL 证书、Grafana 配置文件访问权限、服务器防火墙权限
  • 验收:浏览器地址栏显示锁形图标且 Grafana 内部链接跳转保持 HTTPS

命令速用版

server {listen 443 ssl;server_name grafana.example.com;ssl_certificate /etc/nginx/ssl/fullchain.pem;ssl_certificate_key /etc/nginx/ssl/privkey.pem;ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;ssl_session_cache shared:SSL:10m;location / {proxy_pass http://localhost:3000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-Proto https;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}
}

为什么会这样

Grafana 默认监听 3000 端口且使用 HTTP 协议。如果直接用 Nginx 代理而不修改 Grafana 配置,服务端生成的重定向链接或资源路径可能仍然是 HTTP,导致浏览器拦截混合内容或登录循环。

Nginx 在此处的作用是终止 SSL 连接,将解密后的 HTTP 请求转发给 Grafana,并通过 Header 告知后端原始协议是 HTTPS。

分步处理

1. 准备 SSL 证书
确保你已经有域名的证书文件。如果没有,可以使用 Let's Encrypt 免费申请,例如:sudo certbot `--nginx` -d grafana.example.com。证书路径通常在 /etc/letsencrypt/live/你的域名/ 或自定义路径。

2. 配置 Nginx
/etc/nginx/conf.d/sites-available 新建配置文件。重点在于 proxy_set_header 必须包含 X-Forwarded-Proto https,否则 Grafana 无法识别外部协议。同时建议配置 ssl_protocols 禁用不安全版本。

3. 修改 Grafana 配置
编辑 /etc/grafana/grafana.ini。找到 [server] 部分,修改以下项:

[server]
protocol = http
domain = grafana.example.com
root_url = https://grafana.example.com/

注意:即使 Nginx 是 HTTPS,Grafana 服务端这里通常保持 protocol = http,因为它接收的是来自 Nginx 的内网 HTTP 请求,但 root_url 必须写成对外公开的 HTTPS 地址。避免使用变量语法,显式指定更稳妥。

4. 开放防火墙端口
配置生效后,确保服务器防火墙允许 443 端口访问,否则外部无法连接:

# Ubuntu/Debian
sudo ufw allow 443/tcp# CentOS/RHEL
sudo firewall-cmd `--permanent` `--add-port`=443/tcp
sudo firewall-cmd `--reload`

5. 重启服务
执行 systemctl restart nginxsystemctl restart grafana-server

怎么验证是否生效

1. 浏览器访问 https://你的域名,检查地址栏是否有安全锁标志。
2. 打开浏览器开发者工具(F12),刷新页面,查看 Console 是否有 "Mixed Content" 警告。
3. 尝试登录,观察跳转过程中 URL 是否始终维持 HTTPS,没有跳回 HTTP。
4. 检查 Grafana 日志 /var/log/grafana/grafana.log,确认没有启动报错。

常见坑

1. WebSocket 连接失败
Grafana 的实时图表依赖 WebSocket。如果 Nginx 配置缺少 Upgrade 头,实时数据不会刷新。需要在 location 块中补充 Upgrade 相关配置(见命令速用版)。

2. root_url 路径后缀
如果 Grafana 配置了 app_sub_url(子路径部署),Nginx 的 location 和 Grafana 的 root_url 必须一致,否则静态资源 404。

3. 证书权限问题
Nginx 用户(通常是 www-data 或 nginx)必须有读取证书文件的权限,否则启动失败。

参考来源

  • Grafana 官方文档 - Configuration: https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/
  • Nginx 官方文档 - HTTPS Server: https://nginx.org/en/docs/http/configuring_https_servers.html

原文链接:https://www.zjcp.cc/ask/11501.html

http://www.jsqmd.com/news/843424/

相关文章:

  • 描述统计和频数分析小白看懂
  • ARM SVE指令集ST1H:半字数据高效存储技术解析
  • 腾讯大模型岗位怎么准备:别只会讲模型,搜索推荐和产品落地才是主线
  • Keil MDK csolution项目调试问题解决方案
  • 荣耀亲选小湃摄像头Pro评测:一台顶三台,全屋守护无死角
  • 本次测评聚焦德州设备搬运吊装领域,旨在为对该服务感兴趣的人
  • 天勤量化与 vn.py 对比:期货量化两条 Python 路径怎么选
  • 体验Taotoken模型广场,如何根据任务需求挑选最合适的大模型
  • Windows HEIC缩略图终极解决方案:3分钟让资源管理器识别iPhone照片
  • langchain4j笔记-09
  • Java面试八股文终极清单(含答案详解),从JVM到并发,背完这套直接进大厂
  • 解锁手机位置自由:FakeLocation让你的Android设备拥有虚拟定位超能力
  • 告别“多窗口地狱”!Claude Code 新功能 Agent View:同时指挥一群 AI 干活的“总控台”来了
  • 深入浅出解读NR上行控制:SR、HARQ-ACK、CSI在PUCCH/PUSCH上的复用与优先级之争
  • 别再死磕毕业论文了!okbiye AI 写作,让终稿从 “难产” 变 “顺产”
  • G-Helper深度解析:如何用1MB工具彻底替代华硕Armoury Crate
  • 三维扫描数字化服务商|诺斯顿全场景赋能,解锁各行业数字化转型新路径
  • 为什么你的NotebookLM总给出模糊实验建议?——基于LLM推理链缺陷的8层归因分析
  • ARM SVE2指令集:UQSHLR与URSHLR移位指令详解
  • 为AI智能体项目选择稳定且多模型的后端API供应商
  • 【汕头教育数据】2026龙湖区民办学校硬核测评:从录取分数线看汕头市粤东明德的“差异化”突围
  • 2026 AI 短剧自动生成的工具,有哪些值得说一说
  • 机场管理·三维重建·透明化建筑——以人员管控为核心,一屏全局+实时跟踪赋能智慧管控
  • HunterPie终极指南:5分钟掌握《怪物猎人世界》实时监控神器
  • 深入对比:STM32F030上软件SPI vs 硬件SPI驱动74HC595,谁更适合你的项目?
  • 石家庄资深运势布局调理大师
  • 从Linux 0.11的缺页处理,看现代操作系统特性(写时复制、延迟分配)的雏形
  • 安装离线版mysql,全网最详细
  • 前端工程化:Vite与Rollup构建优化
  • 工业无线网行业竞争格局与投资机会分析报告(2026版)