IIS反向代理安装

出身背景

虽然将IIS和IIS代理与本地托管的应用程序一起部署是一个流行的选项,但通常需要将IIS配置为反向代理. 本指南介绍如何在IIS反向代理部署中端到端安装和配置IIS代理。

先决条件

  1. 互联网信息服务(IIS)。为简单起见,本指南提供了使用IIS 10.0的步骤,但这些步骤应主要适用于其他版本7.0+,只需稍作修改。
  2. Microsoft应用程序请求路由(ARR)3单元此模块允许IIS向后端应用程序提供可靠且可扩展的路由,并且是以反向代理格式配置IIS时使用的标准模块之一。
  3. IIS URL重写模块2.
  4. 卷曲. 此常用工具用于验证配置。

术语

为保持一致性,本文档使用与相同的术语Microsoft的反向代理部署指南.

范围

为简单起见,本文档描述了单个内部web应用程序的部署,该应用程序作为单个tCell进行监视和管理应用程序ID. 此外,为了使初始开发设置更快、更易于测试,下面的示例假定使用简单的普通http配置。强烈建议在为生产启用反向代理服务器之前已启用httpshttp被禁用或重定向到https端口。

安装

配置ARR服务器场

ARR是IIS配置从IIS到另一台服务器(在本例中为内部web应用程序)的路由的标准方法。按照中概述的步骤进行操作Microsoft的ARR服务器场指南.

配置和下载tCell代理工件

  1. 创建一个tCell应用程序
  2. 确保支持输出IP连接
  3. 确保你有一个代理API密钥.
  4. 下载代理和配置
    • 单击tCell控制台顶部导航栏中的“Admin”
    • 单击“下载代理”
    • 选择“Web服务器代理”选项卡
    • 选择“IIS”
    • 下载msi安装程序
    • 单击“下载配置文件”下载代理的配置文件,使用应用程序IDAPI密钥从上面的步骤1和3开始。

安装tCell代理

要手动安装代理,请执行以下操作:

  1. 运行msi安装程序并按照说明操作。这将安装代理并将所需文件放入指定的目录中。默认情况下,目录为C:\Program Files\Rapid7,Inc\tCell IIS代理。
  2. 将“tcell_agent.config”文件放在默认网站的根目录中。在大多数情况下,这将是“C:\inetpub\wwwroot”。

配置TCELL\u代理\u主目录

tCell代理维护一个本地代理缓存并写入日志文件,这需要写入权限。出于安全考虑,遵循最低特权原则,IIS默认网站文件系统不向大多数非系统管理员授予写入权限.

要同时启用对重要缓存和日志目录的写访问并保持最小权限原则,建议您配置TCELL\u AGENT\u主环境变量这将导致缓存和日志文件写入该目录。

  1. 创建一个目录,c:\tcellhome
  2. 设置环境变量TCELL\u代理\u主页到c:\tcellhome

配置URL重写模块

请按照“为您的服务器场创建URL重写规则”一节中的说明进行操作https://techcommunity.microsoft.com/t5/iis-support-blog/application-request-routing-and-url-rewrite-part-1-server-farms/ba-p/347924在服务器级别配置将HTTP请求从默认网站路由到上面配置的ARR服务器场.

重新启动IIS和Windows

在里面互联网信息服务经理点击重新启动右上角窗口中的链接。同时重新启动Windows操作系统确保在前面的步骤中配置了环境变量生效。

发送测试请求

要完全初始化tCell代理,必须让它处理HTTP请求。这可以通过简单的卷曲来实现命令提示符作为:

旋度-vhttp://127.0.0.1/

注1:许多web服务器和API服务器检查并验证HTTP主机头,以确保传入的请求以给定服务器为目标。在这种情况下,上面的示例将不起作用主办标头将包含代理服务器IP地址,而不是实际web服务器的主机名。在这种情况下,可以使用旋度-H标记以手动设置主办标题。例如,如果应用程序服务器具有主机名www.foo.com,则可使用:

curl-v-H“主机:www.foo.com”http://127.0.0.1/

注2:以上示例都隐式地基于一个后端web应用程序,该应用程序提供HTTP获取请求在根目录中,“/”的路径。对于仅支持其他HTTP方法或非根路径的其他后端方案,请遵循cURL REST指南使用适当的标志和路径.

运行此请求后,验证代理是否正在处理ok并将数据发送到tCell云,如下所示:

  1. 检查c:\tcellhome中是否有一个“tcell.log”文件,其行如下Tcell::Processing::RequestDataProcessing::Run:42信息线程已启动
  2. 登录tCell控制台并选择上面创建的应用程序. 在该对话框中,选择代理仪表板,您应该可以在线看到IIS代理。注意:由于tCell平台的高度异步特性,代理在控制台中联机显示可能需要5分钟。

防止IIS 7.5或更高版本上的IIS回收

如果您运行的是IIS 7.5或更高版本,如果应用程序闲置20分钟或更长时间,IIS将回收该应用程序。发生这种情况时,代理将卸载、停止运行,并在tCell控制台中显示为脱机。如果收到请求,代理将再次启动。如果不希望IIS在应用程序空闲时回收应用程序,可以更改应用程序池的启动模式和空闲超时。请注意,IIS仍将根据其常规回收计划进行回收。默认情况下,这设置为1740分钟或29小时。

启动模式

启动模式是IIS中针对IIS web应用程序的配置选项,它根据设置选项确定web应用程序何时启动:
始终运行-IIS web应用程序将在读取其配置后立即启动。
OnDemand-在应用程序收到第一个HTTP/S请求之前,web应用程序不会启动。

要更改启动模式和空闲超时,请执行以下操作:

  1. 通过右键单击应用程序池并选择高级设置,转到应用程序池的高级设置
  2. 将启动模式设置为AlwaysRunning,可在“常规”下找到
  3. 将空闲超时(以分钟为单位)设置为0。这可以在流程模型下找到。

故障排除

请求跟踪失败

经常,当测试初始IIS反向代理部署时,系统的行为不符合预期。例如,当期望GET请求成功并返回HTTP 2xx时,IIS会返回意外的错误结果,并且不清楚如何进行故障排除。

IIS的请求跟踪失败是跟踪和调试复杂IIS反向代理用例的非常有用的工具。微软有几本有用的指南提供基于失败请求跟踪日志的端到端行为故障排除策略。

登录中

在tCell中的不同操作期间使用三种日志记录类型:

  • tCell代理日志记录在代理运行时使用。这些是可以设置路径的日志。
  • IIS代理调试日志记录在加载tCell代理时出现意外故障时使用。这些日志存储在C:\tcell.
  • 启动错误当代理可以启动但无法启动时,使用日志记录。默认情况下禁用此日志记录类型。

tCell代理日志

从IIS代理v2.0.0开始,日志和缓存文件的默认位置为C:\ProgramData\Rapid7,inc\tCell IIS代理\[IIS应用程序id].

可以在中自定义日志级别tcell_agent.config通过添加块(如以下所示)来创建文件:

         
json
1.
“日志记录\u选项”:{
2.
“启用”:符合事实的,
3.
“级别”:“调试”
4.
}

IIS代理调试日志

如果日志目录中没有日志,则可以创建该目录C:\tcell\. 这是IIS代理调试日志的默认目录。

  1. 将运行IIS应用程序的用户作为完全控制添加到目录中。
  2. 重新启动IIS
  3. 应创建一个日志文件,其中包含有关代理启动的信息。

启动错误

要启用启动错误日志记录,请设置TCELL\u代理\u启动\u错误\u日志记录环境变量符合事实的或指定有效路径。此标志将创建一个名为tcell_critical_error.log在正在运行的应用程序的根文件夹中,或在启动时出错时位于指定的路径。

此文件将捕获所有启动错误

此日志记录类型将写入全部的的启动错误全部的此文件的应用程序。如果存在大量应用程序和大量错误,则可能必须扫描整个文件以查找特定于应用程序的错误消息。