如何 Configure/Enable 为 IIS 8.5 请求路由器助手

How to Configure/Enable Request Router Helper for IIS 8.5

我们有一个 Web filter/load 平衡器,可将流量定向到我们的 IIS 8.5(Windows 2012 R2)服务器。问题是在 IIS 日志中,IP 地址(c-ip 字段)被记录为我们的负载平衡器(Sophos UTM,而不是 Microsoft 的 ARR)的本地地址,而我们需要记录实际客户端的源 IP(这是在“自定义”中提供的 X-Forwarded-For header)。我无法使用 IIS 的“高级日志记录”功能来简单地创建另一个列,因为我们的日志监控软件无法处理此自定义字段,也无法处理附加到日志文件名的“_x”。

因此,我花了几个小时试图让 Microsoft 的 Request Router Helper 自动将 X-Forwarded-For 字段值转换为 c-ip 字段(我相信,它应该做)。根据我在下面列出的参考站点,我完成了以下操作:

  1. 将 requestrouterhelper_x64.msi 从 ARR v3 安装到我们的 IIS 8.5 服务器上
  2. 我确认我可以在 C:\Windows\System32\inetsrv\config\schema\arr_helper_schema.xml
  3. 看到文件 (但没有更改任何内容)
  4. 我在 IIS 管理器中没有看到任何其他模块或功能(我应该吗?)
  5. 查看日志文件(在 IISRESET 甚至重启后) 并且 c-ip 值仍被记录为 127.0.0.1,而不是客户端的 IP 地址

我还需要做任何其他事情来 enable/configure 来自 ARR 的 Request Router Helper 自动将客户端 IP 转换为 c-ip 字段吗?

参考文献:

IIS7/8: Logging the real client IP in the IIS hit logs

Client-ip not logged on application server when using ARR (original version for IIS 7)

ARR Helper (for IIS8 - see accepted answer)

几个小时后,我们找到了如何在 IIS 8.5 上启用此功能。以下是步骤:

  1. this site 下载该工具的 64 位版本。 不要 安装通过安装 ARR v3 Web 平台安装程序获得的版本 (这是最大的问题,它无法正常工作)
  2. 在管理员命令提示符下解压并运行 MSI
  3. 打开C:\Windows\System32\inetsrv\config\applicationHost.config查看其在globalModules部分下的模块注册(应该如下)

< add name="ARRHelper" image="%ProgramFiles%\IIS\ARR Helper\requestRouterHelper.dll" />

  1. 在同一文件中,检查或在部分位置添加以下条目 path="" / modules

< add name="ARRHelper" />

我希望这能帮助其他有同样挫败感的人。

谢谢bigmac。您的回答绝对有帮助。我必须在我的环境中做一件事才能让它工作:

  1. 运行 .MSI 作为管理员通过命令提示符(如 bigmac 所说)。但是,我注意到在执行此操作后程序并没有真正安装(检查控制面板中的程序)。
  2. 右键单击并再次安装 .MSI(不是从命令提示符)。
  3. 检查以确保在安装时修改了 ApplicationHost.config。这将确认安装是否成功。

    我尝试了几次,发现只有按此顺序执行这些步骤后它才会起作用。如果您先 运行 安装程序(而不是管理员),它将安装但无法运行。

对于使用 IIS 10 和 Windows 2019 的用户,bigmac 提供的 link 有效。此外,经过大量研究和反复试验,我发现在日志记录中包含自定义字段会阻止 ARR 记录 X-Forwarded-For header。我不得不删除自定义日志记录字段,然后 ARR 开始正常工作。