使用应用程序请求路由创建正向代理

作者:Jim van de Erve

本文介绍如何使用 Internet Information Services (IIS) 的应用程序请求路由 (ARR) 功能和 URL Rewrite 功能来实现正向代理服务器。

概述

利用 IIS 的应用程序请求路由功能,你可以使用代理服务器来控制 Internet 流量。 代理服务器充当单个联系点,为请求端的客户机或响应端的 Web 服务器工作进程提供服务。 在请求端,代理接受来自多个客户端之一的请求,并将其转发到 Internet。 Internet 会认为请求是来自代理,而不是来自客户端。 在响应端,代理接受来自 Internet 的请求,并将其分发给多个工作进程之一。 Internet 会认为请求已被处理,而且代理服务器本身(而不是来自某个后端工作进程)也生成了响应。

第一种类型的代理服务器称为“正向代理”,负责处理来自客户端的出站请求,将其转发到 Internet,并将生成的响应返回给客户端。 第二种类型的代理服务器称为反向代理,负责处理来自 Internet 的传入请求,将其转发给后端工作进程,并将响应返回到 Internet。

Forward and Reverse Proxies

前向代理和反向代理的功能明显不同,但它们执行的基本操作没有区别,都是充当请求者或响应者的代理。 在这两种情况下,代理服务器将专用网络与 Internet 隔离开来,你可以采取措施来提高安全性。 在这两种情况下,代理都会处理请求和响应,因此代理能够对流量执行操作,从而使用缓存或压缩来提高性能、防范攻击和筛选信息。

ARR 作为正向代理

ARR 充当正向代理时,便成为了客户端计算机的内部网络(或 Intranet)的一部分。 代理使用 URL Rewrite 规则将来自客户端的请求传递到 Internet。 ARR 作为正向代理时,可通过缓存来提高带宽使用率和性能;但正向代理不适合作为一个全面的商业级正向代理。

请注意,ARR 仅处理 HTTP 流量,不会处理其他协议。 ARR 不支持 HTTP CONNECT 谓词,因此不支持转发 HTTPS 流量。

ARR as a Forward Proxy

ARR 收到来自某个客户端(比如目标 Web 服务器)请求时,正向代理服务器将按如下所示处理请求,并穿透防火墙将请求转发到 Internet:

  1. 正向代理服务器从客户端接收请求,并检查其有效性。
  2. 如果请求有效,ARR 会检查其缓存,以查看响应是否已驻留在缓存。 如果找到响应,ARR 会将响应返回到客户端,不会将请求发送到 Internet。
  3. 如果 ARR 在缓存中找不到响应,则代理服务器会穿透防火墙将请求发送到 Internet 连接,还会将请求发送到包含该信息的内容服务器。
  4. 当内容服务器满足请求时,响应将通过 Internet 返回给正向代理服务器。 可将 ARR 配置为缓存响应。

前向代理的优势如下:

  • 通过缓存定期请求的信息(如果已启用),可提高性能并降低网络流量。 ARR 会缓存第一个请求者的响应,当后续客户端请求相同的内容时,ARR 会通过缓存来为客户端提供内容。 不会再次从内容服务器请求响应。
  • 通过确保请求有效来帮助提高网络安全性。
  • 通过使用 IIS 压缩来提高性能(如果已启用)。
  • 支持筛选,以确保使用 URL Rewrite 满足策略。

安装和配置 ARR 作为正向代理

先决条件

要使用 ARR 设置正向代理服务器,必须具备以下各项:

  • Windows 2008 或更新系统上的 IIS 7.0 或更高版本(任何 SKU),且为 IIS 安装了跟踪角色服务。
  • Microsoft 应用程序请求路由版本 3 和依赖模块。
  • 至少有一个包含工作站点和应用程序的工作进程服务器。

安装 ARR

如果尚未安装应用程序请求路由版本 3,可在此处下载: 此链接显示的下载站点包括安装说明。

安装 URL Rewrite

通过服务器管理器安装 IIS 的 URL Rewrite 模块。 有关详细信息,请参阅在 Windows Server 2012 R2 上安装 IIS 8.5

将 ARR 配置为正向代理

要启用 ARR 作为代理,并创建 URL Rewrite 规则以启用 ARR 作为正向代理,请继续执行如下操作:

  1. 打开“Internet Information Services (IIS)管理器” 。

  2. 在“连接”窗格中,选择服务器

  3. 在服务器窗格中,双击“应用程序请求路由缓存”。 ARR Cache icon

  4. 在“操作”窗格中单击“服务器代理设置”。 Server Proxy Settings

  5. 在“应用程序请求路由”页上,选择“启用代理”。 Enable proxy

  6. 在“操作”窗格中,单击“应用”。 这将在服务器级别启用 ARR 作为代理。 Enable ARR as a proxy

  7. 要开始将 ARR 转换为正向代理的过程,请在“连接”窗格中单击服务器节点。

  8. 在服务器窗格中,双击“URL Rewrite”。 URL Rewrite

  9. 在“操作”窗格中,单击“添加规则”。 Add Rule

  10. 在“添加规则”对话框中,双击“空白规则”。 Blank Rule

  11. 在“编辑入站规则”对话框中的“名称”字段中,输入“正向代理”。 在“匹配 URL”区域中,输入以下内容:

    • 使用:通配符
    • 模式:*

    Screenshot shows the Edit Inbound Rule dialog box for Forward Proxy.

  12. 向下滚动到“编辑入站规则”对话框的“条件”区域,然后单击“添加...”。 Add Condition

  13. 在“添加条件”对话框中,选择或输入以下内容:

    • 条件输入:{HTTP_HOST}
    • 类型:匹配模式
    • 模式:*

    Edit Inbound Rule

  14. 向下滚动到“编辑入站规则”对话框的“操作”区域,然后输入以下内容:

    • 操作类型:重写
    • 重写 URL:http://{C:1}/{R:0}

    Screenshot shows the Edit Inbound Rule dialog box with the Action type Rewrite and a specified Rewrite URL.

  15. 在“操作”窗格中,单击“应用”

    注意

    此规则允许 HTTP 消息通过正向代理传递。 此正向代理不支持 HTTPS (443) 消息,因为 ARR 不支持 HTTP CONNECT。

  16. 在应用程序、浏览器等软件中根据需要配置代理设置。