使用IIS和URL Rewrite作为反向代理

bob电竞频道Grafana实验室团队
Grabob电竞频道fana实验室团队

最近更新于2022年4月30日

先进的

使用IIS与URL重写作为反向代理

如果你想让Grafana成为IIS网站下的子路径/子文件夹,那么ISS的应用程序请求路由(ARR)和URL重写模块可以用来支持这一点。

例子:

Grafana作为子路径:http://yourdomain.com:8080/grafana

其他的例子:

  • 如果应用程序只在本地服务器上提供服务,父站点也可以看起来像http://localhost:8080。
  • 如果您的域在端口443上使用https服务,因此端口通常不会在站点地址中输入,那么在下面的配置步骤中为父站点指定端口的需要就可以消除了。

设置

安装IIS的URL重写模块。

您还需要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:转发代理

  1. 打开IIS管理器并单击服务器
  2. 在服务器的管理控制台中,双击Application Request Routing选项:
  3. 单击服务器代理设置右窗格上的操作
  4. 选择启用代理复选框,以便启用它
  5. 点击应用并继续进行URL重写配置

注意:如果不启用转发代理,如果只应用URL重写规则,很可能会得到404 Not Found

步骤2:URL重写

  1. 在IIS管理器中,单击将要运行grafana的网站。例如,选择绑定到的网站http://yourdomain.com域。
  2. 在此网站的管理控制台中,双击URL重写选项:
  1. 按一下添加规则(s)…行动
  2. 为入站规则选择空白规则模板
  1. 用以下设置为网站创建入站规则:
  • 模式:grafana (/) ? (. *)(如果你自定义了要使用的子路径,用它来代替grafana
  • 检查忽略大小写复选框
  • 重写URL设置为http://localhost: 3000 / {R: 2}
  • 检查追加查询字符串复选框
  • 检查停止处理后续规则复选框
  1. 如果您的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

  1. root_url在Grafana配置文件中的设置不匹配父URL和子路径。如果root_url被错误注释掉(用于注释掉.ini文件中的一行):

    ;Root_url = %(protocol)s://%(domain)s/grafana/

  2. 的子路径root_url设置不匹配IIS入站规则模式中使用的子路径:

    Root_url = %(protocol)s://%(domain)s/grafana/

    入站规则中的模式:wrongsubpath (/) ? (. *)

  3. 或者入站规则中的重写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