实践背景
当您需要通过 HTTPS 协议安全访问 Grafana 内网地址时,由于 Grafana 服务默认仅提供 HTTP 内网访问,直接访问存在数据传输安全风险。通过在同 VPC 的云服务器上自建 Nginx 反向代理,可以为 Grafana 内网地址提供 HTTPS 支持,保障数据传输的安全性。
前提条件
已 创建 Grafana 实例,并获取内网访问地址(如
http://10.0.0.1:3000)。已拥有一台与 Grafana 实例同 VPC 的 云服务器(CVM)。
已 获取 SSL 证书文件(
.pem 证书文件和 .key 私钥文件)。解决方案
在与 Grafana 同 VPC 的云服务器上安装 Nginx,配置 SSL 证书并设置反向代理,将 HTTPS 请求转发到 Grafana 的 HTTP 内网地址,从而实现 HTTPS 访问。
步骤1:安装 Nginx
1. 登录云服务器,下载并解压 Nginx 源码包,此处以 nginx-1.24.0为例进行介绍。
# 下载 Nginx 源码包wget https://nginx.org/download/nginx-1.24.0.tar.gz# 将安装包复制到目标目录并解压(目录可根据实际情况调整)mkdir -p /usr/local/nginx && cp nginx-1.24.0.tar.gz /usr/local/nginx/cd /usr/local/nginx/tar -zxvf nginx-1.24.0.tar.gzcd nginx-1.24.0/
2. 安装 SSL 相关依赖。
yum -y install make zlib-devel gcc-c++ libtool openssl openssl-devel
3. 配置编译参数,启用 SSL 模块。
./configure \\--user=nobody \\--group=nobody \\--prefix=/usr/local/nginx \\--with-http_stub_status_module \\--with-http_gzip_static_module \\--with-http_realip_module \\--with-http_sub_module \\--with-http_ssl_module # 启用 SSL 模块,支持 HTTPS
4. 编译并安装 Nginx。
makemake install
步骤2:准备 SSL 证书
将 SSL 证书文件上传到云服务器的
/usr/local/nginx/ssl 目录,文件命名如下:文件路径 | 说明 |
/usr/local/nginx/ssl/cert.pem | SSL 证书文件 |
/usr/local/nginx/ssl/cert.key | SSL 私钥文件 |
# 创建证书目录(如不存在)mkdir -p /usr/local/nginx/ssl# 将证书和私钥文件上传至该目录# /usr/local/nginx/ssl/cert.pem# /usr/local/nginx/ssl/cert.key
注意:
请确保证书文件为 PEM 格式,且证书与私钥匹配。
步骤3:配置 Nginx 反向代理
修改 Nginx 配置文件
/usr/local/nginx/conf/nginx.conf,在 http 块中修改以下 HTTPS server 配置:server {listen 443 ssl;server_name grafana-xxxxxx.grafana.tencent-cloud.com; # 替换为您的 Grafana 访问域名ssl_certificate /usr/local/nginx/ssl/cert.pem; # SSL 证书路径ssl_certificate_key /usr/local/nginx/ssl/cert.key; # SSL 私钥路径ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;location / {# CORS 跨域配置add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';# 传递真实客户端信息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_pass http://10.0.0.1:3000; # 替换为您的 Grafana 内网地址}}
关键配置说明:
参数 | 说明 |
server_name | 您的 Grafana 访问域名,需替换为实际域名 |
ssl_certificate | SSL 证书文件路径 |
ssl_certificate_key | SSL 私钥文件路径 |
ssl_ciphers | 加密套件配置, HIGH:!aNULL:!MD5 表示使用高强度加密并排除不安全算法 |
proxy_pass | Grafana 内网地址,需替换为实际的内网 IP 和端口 |
步骤4:检查配置
执行以下命令检查 Nginx 配置文件语法是否正确:
cd /usr/local/nginx/sbin/./nginx -t
注意:
如果检查不通过,请根据错误提示修改配置文件。常见错误原因包括:
证书文件不存在或路径错误。
证书格式不正确(需为 PEM 格式)。
配置文件语法错误(如缺少分号、括号不匹配)。
配置中包含非英文标点符号。
步骤5:启动 Nginx
cd /usr/local/nginx/sbin/./nginx
启动后,您即可通过
https://<您的域名> 访问 Grafana 服务。说明:
如后续修改了 Nginx 配置,可使用
./nginx -s reload 命令重新加载配置,无需重启服务。配置建议
建议将 SSL 私钥文件权限设置为
600,仅允许 root 用户读取,提升安全性。如您配置了自定义域名并使用 SSO 登录,请在 Grafana 配置中将
server.root_url 设置为 HTTPS 域名,避免 SSO 登录异常。建议定期检查 SSL 证书有效期,在证书过期前及时更换。