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 ""; } }
个人理解指正
你的核心思路方向正确,但配置存在关键错误导致失效:
$remote_user变量为空:Nginx仅做了IP白名单允许访问,未开启基础认证,$remote_user无值,导致Grafana收到的X-WEBAUTH-USER为空,无法触发自动登录。- 真实客户端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
相关产品推荐
相关产品推荐

