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

Grafana结合Nginx反向代理认证配置问题求助

Grafana IP白名单免认证失效问题排查

需求说明

  • 为自助终端PC配置IP白名单,使其免认证访问Grafana面板
  • 非白名单用户通过已正常运行的Azure AD登录

问题描述

白名单IP经Nginx转发后跳转到Grafana登录页(已启用基础认证),无法触发自动登录,无法定位问题。

现有配置

Grafana配置

#################################### Auth Proxy ######### 
[auth.proxy]
enabled = true 
header_name = X-WEBAUTH-USER 
header_property = username 
auto_sign_up = true 
sync_ttl = 60 
whitelist = <myWhiteListedIP>
headers = 
headers_encoded = false 
enable_login_token = true

Nginx配置

# HTTPS server 
server { 
    listen 443 ssl;
    server_name <myGrafanaServer>; 
    
    ssl_certificate "C:\Program Files\GrafanaLabs\<...>";
    ssl_certificate_key "C:\Program Files\GrafanaLabs\<...>";

    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;

    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on; 

    location / {
        allow <myWhiteListedIP>;
        deny all; 
    
        proxy_pass https://localhost:3000;
        proxy_set_header X-WEBAUTH-USER $remote_user;
        proxy_set_header Authorization ""; 
    } 
}

个人理解指正

你的核心思路方向正确,但配置存在关键错误导致失效:

  1. $remote_user变量为空:Nginx仅做了IP白名单允许访问,未开启基础认证,$remote_user无值,导致Grafana收到的X-WEBAUTH-USER为空,无法触发自动登录。
  2. 真实客户端IP未传递:Grafana默认接收的是Nginx的IP,而非终端PC的真实IP,导致auth.proxy.whitelist配置的白名单IP无法匹配。

修正方案

1. 调整Nginx配置

  • 给白名单终端设置固定的X-WEBAUTH-USER值
  • 传递真实客户端IP给Grafana
location / {
    allow <myWhiteListedIP>;
    deny all; 

    proxy_pass http://localhost:3000;
    # 为白名单终端设置固定用户名,Grafana将自动创建该用户
    proxy_set_header X-WEBAUTH-USER "terminal_auto_login";
    # 传递真实客户端IP,确保Grafana白名单匹配
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Authorization ""; 
}

2. 调整Grafana配置

  • 开启反向代理模式,信任Nginx的IP转发
#################################### Server #########
[server]
root_url = https://<myGrafanaServer>/
# 允许Nginx的IP转发请求,生产环境建议指定具体IP
forwarded_allow_ips = <Nginx_Server_IP>

#################################### Auth Proxy ######### 
[auth.proxy]
enabled = true 
header_name = X-WEBAUTH-USER 
header_property = username 
auto_sign_up = true 
sync_ttl = 60 
# 若依赖Nginx的IP过滤,可将此处改为Nginx的IP;若需Grafana验证终端IP,保留原白名单IP
whitelist = <myWhiteListedIP>
headers = 
headers_encoded = false 
enable_login_token = true

3. 验证逻辑

修正后流程:

  • Nginx拦截请求,仅允许白名单IP访问
  • 给通过的请求添加固定X-WEBAUTH-USER头和真实客户端IP
  • Grafana收到请求后,识别到X-WEBAUTH-USER头,自动创建并登录该用户(因auto_sign_up=true),实现免认证访问

内容的提问来源于stack exchange,提问作者krno

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 21:43:40