你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将 ILB 应用服务环境与 Azure 应用程序网关集成

应用服务环境是客户的 Azure 虚拟网络子网中的 Azure 应用服务部署。 它可以与外部或内部终结点一起部署,以进行应用访问。 具有内部终结点的应用服务环境的部署称为内部负载均衡器 (ILB) 应用服务环境 (ASE)。

Web 应用程序防火墙会检查入站 Web 流量,并阻止 SQL 注入、跨站点脚本、恶意软件上传和应用程序 DDoS 及其他攻击,从而帮助你保护 Web 应用程序的安全。 可以从 Azure 市场获取 WAF 设备,也可以使用 Azure 应用程序网关

Azure 应用程序网关是一个虚拟设备,可提供第 7 层负载均衡、TLS/SSL 卸载以及 Web 应用程序防火墙 (WAF) 保护。 可侦听公共 IP 地址和将流量路由到应用程序终结点。 以下信息描述了如何将 WAF 配置的应用程序网关与 ILB 应用服务环境中的应用进行集成。

将应用程序网关与 ILB 应用服务环境进行集成是在应用级别上进行的。 配置应用程序网关与 ILB 应用服务环境的集成时,你是在对 ILB 应用服务环境中的特定应用执行此操作。 使用此技术可以在单个 ILB 应用服务环境中托管安全的多租户应用程序。

Screenshot of High level integration diagram

本演练中的操作:

  • 创建 Azure 应用程序网关。
  • 配置应用程序网关,以指向 ILB 应用服务环境中的某个应用。
  • 编辑指向应用程序网关的公共 DNS 主机名。

先决条件

若要将应用程序网关与 ILB 应用服务环境集成,需要:

  • 一个 ILB 应用服务环境。
  • ILB 应用服务环境的一个专用 DNS 区域。
  • ILB 应用服务环境中运行的一个应用。
  • 稍后用于指向应用程序网关的公共 DNS 名称。
  • 如果需要对应用程序网关使用 TLS/SSL 加密,则需要提供有效的公共证书用于绑定到应用程序网关。

ILB 应用服务环境

有关如何创建 ILB 应用服务环境的详细信息,请参阅在 Azure 门户中创建 ASE使用 ARM 模版创建 ASE

  • 创建 ILB ASE 后,默认域为 <YourAseName>.appserviceenvironment.net

    Screenshot of ILB ASE Overview

  • 已预配内部负载均衡器用于入站访问。 可以在“ASE 设置”下的“IP 地址”中检查入站地址。 稍后可以创建映射到此 IP 地址的专用 DNS 区域。

    Screenshot of getting the inbound address from ILB ASE IP addresses settings.

专用 DNS 区域

需要使用专用 DNS 区域进行内部名称解析。 使用下表中所示的记录集以 ASE 名称创建专用 DNS 区域(有关说明,请参阅快速入门 - 使用 Azure 门户创建 Azure 专用 DNS 区域)。

名称 类型
* A ASE 入站地址
@ A ASE 入站地址
@ SOA ASE DNS 名称
*.scm A ASE 入站地址

ILB ASE 上的应用服务

需要在 ILB ASE 中创建应用服务计划和应用。 在门户中创建应用时,请选择你的 ILB ASE 作为区域。

应用程序网关的公共 DNS 名称

若要从 Internet 连接到应用程序网关,需要一个可路由的域名。 在本例中,我使用了可路由的域名 asabuludemo.com,并打算使用域名 app.asabuludemo.com 连接到应用服务。 创建应用程序网关后,映射到此应用域名的 IP 地址需要设置为应用程序网关公共 IP 地址。 如果使用映射到应用程序网关的公共域,则无需在应用服务中配置自定义域。 可以购买带有应用服务域的自定义域名。

有效的公共证书

为了增强安全性,建议绑定 TLS/SSL 证书以进行会话加密。 若要将 TLS/SSL 证书绑定到应用程序网关,需要提供包含以下信息的有效公共证书。 使用应用服务证书时,可以购买 TLS/SSL 证书并将其导出为 .pfx 格式。

名称 说明
公用名 <yourappname>.<yourdomainname>,例如:app.asabuludemo.com
*.<yourdomainname>,例如:*.asabuludemo.com
应用程序网关的标准证书或通配符证书
使用者可选名称 <yourappname>.scm.<yourdomainname>,例如:app.scm.asabuludemo.com
*.scm.<yourdomainname>,例如:*.scm.asabuludemo.com
允许连接到应用服务 kudu 服务的 SAN。 如果你不想要将应用服务 kudu 服务发布到 Internet,则这是可选的设置。

证书文件应包含一个私钥并保存为 .pfx 格式,稍后会将它导入到应用程序网关。

创建应用程序网关

若要了解如何创建基本的应用程序网关,请参阅教程:使用 Azure 门户创建具有 Web 应用程序防火墙的应用程序网关

在本教程中,我们将使用 Azure 门户创建具有 ILB 应用服务环境的应用程序网关。

在 Azure 门户中,选择“新建”>“网络”>“应用程序网关”以创建应用程序网关 。

  1. 基本设置

    在“层”下拉列表中,可以选择“标准 V2”或“WAF V2”以在应用程序网关上启用“WAF”功能。

  2. 前端设置

    选择“公共”、“专用”或“两者”作为前端 IP 地址类型 。 如果设置为“专用”或“两者”,则需要在应用程序网关子网范围内分配一个静态 IP 地址 。 在本例中,我们仅设置为公共终结点的公共 IP。

    • 公共 IP 地址 - 需要关联一个公共 IP 地址以进行应用程序网关公共访问。 请记下此 IP 地址,因为稍后需要在 DNS 服务中添加一条记录。

      Screenshot of getting a public IP address from the application gateway frontends setting.

  3. 后端设置

    输入后端池名称,并在“目标类型”中选择“应用服务”或者“IP 地址或 FQDN” 。 在本例中,我们设置为“应用服务”,并从目标下拉列表中选择应用服务名称。

    Screenshot of adding a backend pool name in backends setting.

  4. 配置设置

    在“配置”设置中,需要选择“添加路由规则”图标来添加路由规则。

    Screenshot of adding a routing rule in configuration setting.

    需要在路由规则中配置“侦听器”和“后端目标”。 可以添加 HTTP 侦听器以进行概念证明部署,或添加 HTTPS 侦听器以增强安全性。

    • 若要使用 HTTP 协议连接到应用程序网关,可以使用以下设置创建侦听器。

      参数 价值 说明
      规则名称 例如:http-routingrule 路由名称
      侦听器名称 例如:http-listener 侦听器名称
      前端 IP 公用 要进行 Internet 访问,请设置为“公共”
      协议 HTTP 不使用 TLS/SSL 加密
      端口 80 默认 HTTP 端口
      侦听器类型 多站点 允许在应用程序网关上侦听多站点
      主机类型 多个/通配符 如果侦听器类型设置为多站点,请将此参数设置为多站点或通配符网站名称。
      主机名 例如:app.asabuludemo.com 设置为应用服务的可路由域名

      Screenshot of HTTP Listener of the application gateway Routing Rule.

    • 若要使用 TLS/SSL 加密连接到应用程序网关,可以使用以下设置创建侦听器。

      参数 价值 说明
      规则名称 例如:https-routingrule 路由名称
      侦听器名称 例如:https-listener 侦听器名称
      前端 IP 公用 要进行 Internet 访问,请设置为“公共”
      协议 HTTPS 使用 TLS/SSL 加密
      端口 443 默认 HTTPS 端口
      HTTPS 设置 上传证书 上传 .pfx 格式的包含 CN 和私钥的证书。
      侦听器类型 多站点 允许在应用程序网关上侦听多站点
      主机类型 多个/通配符 如果侦听器类型设置为多站点,请将此参数设置为多站点或通配符网站名称。
      主机名 例如:app.asabuludemo.com 设置为应用服务的可路由域名

      HTTPS listener of the application gateway Routing Rule.

    • 必须在“后端目标”中配置“后端池”和“HTTP 设置” 。 在前面的步骤中已配置后端池。 选择“新增”链接以添加 HTTP 设置。

      Screenshot of adding new link to add an H T T P setting.

    • 下面列出了 HTTP 设置:

      参数 价值 说明
      HTTP 设置名称 例如:https-setting HTTP 设置名称
      后端协议 HTTPS 使用 TLS/SSL 加密
      后端端口 443 默认 HTTPS 端口
      使用已知的 CA 证书 ILB ASE 的默认域名为 .appserviceenvironment.net,此域的证书由公共受信任的根证书颁发机构颁发。 在“受信任的根证书”设置中,可以设置为使用已知的 CA 受信任根证书。
      替代为新的主机名 连接到 ILB ASE 上的应用时,主机名头将被覆盖
      主机名替代 从后端目标中选取主机名 将后端池设置为应用服务时,可以从后端目标中选取主机
      创建自定义探测 使用默认的运行状况探测

      Screenshot of **Add an H T T P setting** dialog.

配置应用程序网关与 ILB ASE 的集成

若要从应用程序网关访问 ILB ASE,需要检查是否已将某个虚拟网络链接到专用 DNS 区域。 如果未将任何虚拟网络链接到应用程序网关的 VNet,请按照以下步骤添加虚拟网络链接。

  • 若要使用专用 DNS 区域配置虚拟网络链接,请转到专用 DNS 区域配置平面。 选择“虚拟网络链接”>“添加”

Add a virtual network link to private DNS zone.

  • 输入链接名称,并选择应用程序网关所在的相应订阅和虚拟网络。

Screenshot of input link name details to virtual network links setting in private DNS zone.

  • 可以在应用程序网关平面的“后端运行状况”中确认后端运行状况。

Screenshot of confirm the backend health status from backend health.

添加公共 DNS 记录

从 Internet 访问应用程序网关时,需要配置正确的 DNS 映射。

  • 可以在应用程序网关平面的“前端 IP 配置”中找到应用程序网关的公共 IP 地址。

Application gateway frontend IP address can be found in Frontend IP configuration.

  • 以 Azure DNS 服务为例,你可以添加一个记录集,以将应用域名映射到应用程序网关的公共 IP 地址。

Screenshot of adding a record set to map the app domain name to the public IP address of the application gateway.

验证连接

  • 在从 Internet 访问的计算机上,可以验证应用域名是否可解析为应用程序网关公共 IP 地址。

validate the name resolution from a command prompt.

  • 在从 Internet 访问的计算机上,测试从浏览器进行 Web 访问。

Screenshot of opening a browser, access to the web.