使用IIS和URL Rewrite作为反向代理
使用IIS与URL重写作为反向代理
如果你想让Grafana成为IIS网站下的子路径/子文件夹,那么ISS的应用程序请求路由(ARR)和URL重写模块可以用来支持这一点。
例子:
- 父站点:http://yourdomain.com:8080
- Grafana: http://localhost: 3000
Grafana作为子路径:http://yourdomain.com:8080/grafana
其他的例子:
- 如果应用程序只在本地服务器上提供服务,父站点也可以看起来像http://localhost:8080。
- 如果您的域在端口443上使用https服务,因此端口通常不会在站点地址中输入,那么在下面的配置步骤中为父站点指定端口的需要就可以消除了。
设置
安装IIS的URL重写模块。
- 下载并安装IIS的URL重写模块:https://www.iis.net/downloads/microsoft/url-rewrite
您还需要IIS的应用程序请求路由(ARR)模块来进行代理转发
Grafana配置
可以通过创建文件名/编辑现有文件名来设置Grafana配置custom.ini
在相依
您的Grafana安装的子目录。看到安装说明了解更多细节。
使用上面的例子,如果子路径是grafana
(您可以将其设置为所需的任何值),父站点是yourdomain.com: 8080
,然后把这个加到custom.ini
配置文件:
[server] domain = yourdomain.com:8080 root_url = %(protocol)s://%(domain)s/grafana/
修改配置文件后,重新启动Grafana服务器。
服务Grafana的配置地址:http://yourdomain.com:8080/grafana
如果您的域上已经有了子路径,请按以下方式配置它:
[server] domain = yourdomain.com/existingsubpath root_url = %(protocol)s://%(domain)s/grafana/
修改配置文件后,重新启动Grafana服务器。
服务Grafana的配置地址:http://yourdomain.com/existingsubpath/grafana
IIS配置
步骤1:转发代理
- 打开IIS管理器并单击服务器
- 在服务器的管理控制台中,双击Application Request Routing选项:
- 单击
服务器代理设置
右窗格上的操作 - 选择
启用代理
复选框,以便启用它 - 点击
应用
并继续进行URL重写配置
注意:如果不启用转发代理,如果只应用URL重写规则,很可能会得到404 Not Found
步骤2:URL重写
- 在IIS管理器中,单击将要运行grafana的网站。例如,选择绑定到的网站http://yourdomain.com域。
- 在此网站的管理控制台中,双击URL重写选项:
- 按一下
添加规则(s)…
行动 - 为入站规则选择空白规则模板
- 用以下设置为网站创建入站规则:
- 模式:
grafana (/) ? (. *)
(如果你自定义了要使用的子路径,用它来代替grafana
) - 检查
忽略大小写
复选框 - 重写URL设置为
http://localhost: 3000 / {R: 2}
- 检查
追加查询字符串
复选框 - 检查
停止处理后续规则
复选框
- 如果您的Grafana版本高于8.3.5,您还需要配置反向代理来保留主机头文件。
- 这可以通过在cmd提示符中运行配置IIS配置文件来实现
windir%\system32\inetsrv\appcmd.exe set config -section:system. exewebServer/proxy -preserveHostHeader:true /commit:apphost
- 更多信息请点击这里https://github.com/grafana/grafana/issues/45261
最后,导航到http://yourdomain.com:8080/grafana
你应该会进入Grafana的登录页面。
故障排除
404错误
当导航到Grafana URL时(http://yourdomain.com:8080/grafana
)及HTTP错误404.0 -未发现
返回Error,则:
- 入站规则的模式不正确。编辑规则,单击
测试模式……
按钮,测试URL后的部分http://yourdomain.com:8080/
并确保它匹配。为grafana /登录
测试应该返回3个捕获组:{R:0}:grafana
{R: 1}:/
{R: 2}:登录
. - 的
root_url
在Grafana配置文件中的设置不匹配父URL和子路径。
Grafana网站只显示文本,没有图像或css
的
root_url
在Grafana配置文件中的设置不匹配父URL和子路径。如果root_url被错误注释掉(;
用于注释掉.ini文件中的一行):;Root_url = %(protocol)s://%(domain)s/grafana/
的子路径
root_url
设置不匹配IIS入站规则模式中使用的子路径:Root_url = %(protocol)s://%(domain)s/grafana/
入站规则中的模式:
wrongsubpath (/) ? (. *)
或者入站规则中的重写URL不正确。
重写URL不应该包括子路径。
重写URL应该包含来自模式匹配的捕获组,该模式匹配返回子路径之后的URL部分。上面使用的模式返回三个捕获组,第三个捕获组{R:2}返回后面URL的部分
http://yourdomain.com:8080/grafana/
.
您将看到一个“错误更新选项:起源不允许”错误
- 确保您已经执行了上面的步骤6,通过在cmd提示符中编辑IIS配置来配置IIS以保存主机头信息:
windir%\system32\inetsrv\appcmd.exe set config -section:system. exewebServer/proxy -preserveHostHeader:true /commit:apphost