Grafana部署于IIS:升级至V9后遇Origin Not Allowed问题求助
解决Grafana 9升级后IIS反向代理下的"Origin not allowed"问题
1. 检查并更新Grafana配置文件(grafana.ini)
找到[server]区块,确保配置匹配你的部署场景:
domain = 你的IIS访问域名(例如grafana.yourcompany.com)root_url = %(protocol)s://%(domain)s/(若使用子路径部署,比如/grafana,需改为%(protocol)s://%(domain)s/grafana/)serve_from_sub_path = true(子路径部署时必须开启)- 新增或调整CORS相关配置:
注意:[security] allow_embedding = true cors_allow_origins = https://你的IIS域名,http://你的IIS域名cors_allow_origins需填写用户实际访问Grafana的前端域名,多个域名用逗号分隔。
2. 修正IIS URL Rewrite反向代理规则
确保规则正确传递关键请求头,让Grafana能识别真实请求源:
- 打开IIS管理器,进入目标站点的URL Rewrite规则编辑界面
- 在
服务器变量中添加以下变量:HTTP_X_FORWARDED_PROTO:值设为{HTTPS}(HTTPS站点自动映射为https,HTTP则为http)HTTP_X_FORWARDED_HOST:值设为{HTTP_HOST}
- 确保规则条件中未过滤
Origin请求头 - 示例规则XML片段:
<rule name="ReverseProxyToGrafana" 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="{HTTP_HOST}" /> </serverVariables> </rule>
3. 补充IIS CORS配置(若仍有问题)
如果上述配置后跨域警告未消失,可安装IIS CORS Module,并在站点web.config中添加:
<cors enabled="true"> <add origin="https://你的IIS域名" allowCredentials="true"> <allowHeaders allowAllRequestedHeaders="true" /> <allowMethods> <add method="GET" /> <add method="POST" /> <add method="PUT" /> <add method="DELETE" /> </allowMethods> </add> </cors>
4. 重启服务生效
- 重启Grafana服务
- 重启IIS站点或整个IIS服务
问题核心原因
Grafana 9相比v8大幅强化了跨域请求的校验逻辑,严格验证Origin头与配置允许源的匹配性,同时要求反向代理必须正确传递X-Forwarded-*系列头,让Grafana能准确识别客户端的真实请求来源和协议。
内容的提问来源于stack exchange,提问作者Cees Meijer
相关产品推荐
相关产品推荐

