安装IIS反向代理

背景

使用本地托管应用程序部署IIS和IIS代理是一种流行的选择,但通常人们希望将IIS配置为反向代理.本指南介绍在端到端IIS反向代理部署中如何安装和配置IIS代理。

先决条件

  1. 互联网信息服务(IIS)。为简单起见,本指南提供了使用IIS 10.0的步骤,但是这些步骤在其他7.0+版本中应该可以使用,只需要做一些小小的修改。
  2. Microsoft应用程序请求路由(ARR模块。此模块允许IIS为后端应用程序提供可靠和可伸缩的路由,并且是在以反向代理格式配置IIS时使用的标准模块之一。
  3. IIS URL重写模块2
  4. 旋度.这个流行的工具用于验证配置。

术语

为保持一致性,本文档使用与微软的反向代理部署指南

范围

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

安装

配置ARR服务器群

ARR是IIS配置从IIS到另一个服务器(在本例中是一个内部web应用程序)路由的标准方法。按照中列出的步骤微软的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。配置文件,在你的默认网站的根目录。在大多数情况下,这将是“C: inetpub\wwwroot”。

配置TCELL_AGENT_HOME目录

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

要启用对重要缓存和日志目录的写访问,并维护最小权限原则,建议配置tcell_agent_home环境变量这将导致缓存和日志文件被写入该目录。

  1. 创建目录,c:\ tcellhome
  2. 设置环境变量tcell_agent_home到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请求。这可以简单地通过a中的旋度来实现命令提示符为:

curl - v http://127.0.0.1/

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

卷曲-v-h“主机:www.foo.com”http://127.0.0.1/

注2:上面的例子都是基于后端web应用程序的HTTP GET请求在根路径“/”上。对于只支持其他HTTP方法或非根路径的其他后端场景,请遵循卷曲静止指南使用适当的标志和路径

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

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

在IIS 7.5或更高版本上阻止IIS回收

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

启动模式

启动模式是IIS中的一个配置选项,用于IIS web应用程序,它根据设置的选项决定web应用程序何时启动:
AlwaysRunning-读取配置后,IIS web应用程序将立即启动。
调控- 直到应用程序接收到第一个HTTP / S请求之前,Web应用程序将无法启动。

更改启动模式和空闲超时:

  1. 通过右键单击应用程序池并选择高级设置,进入应用程序池的高级设置
  2. 设置启动模式为始终运行,在“常规”下找到
  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
“logging_options”
2
“启用”真的
3.
“水平”“调试”
4

IIS代理调试日志

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

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

启动错误

要启用启动错误日志记录,请设置tcell_agent_startup_error_logging.环境变量来真的或指定有效路径。这个标志将创建一个名为tcell_critical_error.log在运行应用程序的根文件夹中或在指定的路径中指定的路径如果启动时出现错误。

这个文件将捕获所有启动错误

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