在IIS反向代理后Grafana的Azure AD登录跳转异常排查
问题解决:IIS反向代理Grafana后OAuth跳转异常的修复方案
核心原因
Grafana未识别到自身处于反向代理环境,导致生成OAuth授权URL时误用了代理域名而非认证提供商的地址,同时IIS未正确传递外部请求的协议、主机头等关键信息,进一步加剧了URL生成错误。
具体修复步骤
1. 修正Grafana的custom.ini配置
打开Grafana安装目录下的conf/custom.ini,添加/修改以下参数:
# 指定外部访问的真实地址 root_url = https://grafana.example.com/ # 子域名部署需设为false(子路径部署才设为true) serve_from_sub_path = false # 信任IIS代理的IP(同一机器填127.0.0.1,不同机器填IIS服务器IP) trusted_proxies = 127.0.0.1 # 强制使用root_url指定的域名生成外部链接 enforce_domain = true
修改后重启Grafana服务。
2. 完善IIS重写规则的请求头传递
在IIS站点的web.config中,为反向代理规则添加转发头配置,确保Grafana能获取外部请求的真实协议和主机名:
<rewrite> <rules> <rule name="GrafanaReverseProxy" stopProcessing="true"> <match url="(.*)" /> <action type="Rewrite" url="http://localhost:3000/{R:1}" /> <!-- 添加转发头配置 --> <serverVariables> <set name="HTTP_X_FORWARDED_PROTO" value="https" /> <set name="HTTP_X_FORWARDED_HOST" value="grafana.example.com" /> <set name="HTTP_X_FORWARDED_PORT" value="443" /> </serverVariables> </rule> </rules> </rewrite>
额外操作:打开IIS管理器 → 选中目标站点 → 点击「URL重写」→ 右侧「查看服务器变量」→ 将上述三个HTTP_X_FORWARDED_*变量添加到允许修改的列表中。
3. 验证Azure AD应用的重定向URI
登录Azure Entra ID后台,找到对应的Grafana应用注册,确保重定向URI设置为:https://grafana.example.com/login/azuread
(必须与外部访问地址完全匹配,不能保留localhost相关的旧配置)
原理说明
root_url和enforce_domain强制Grafana使用指定的外部域名生成所有公共链接(包括OAuth授权地址);trusted_proxies让Grafana信任IIS传递的转发头,避免忽略这些关键信息;- IIS添加的
X-Forwarded-*头将外部请求的HTTPS协议、正确域名传递给Grafana,确保其生成的OAuth跳转URL指向微软登录服务器而非自身域名。
内容的提问来源于stack exchange,提问作者jklemmack
相关产品推荐
相关产品推荐

