使用 Azure 门户创建支持 HTTP 到 HTTPS 重定向的应用程序网关

可以通过 Azure 门户使用 TLS 终端的证书创建应用程序网关。 路由规则用于将 HTTP 流量重定向到应用程序网关中的 HTTPS 端口。 在此示例中,还会为包含两个虚拟机实例的应用程序网关的后端池创建一个虚拟机规模集

在本文中,学习如何:

  • 创建自签名证书
  • 设置网络
  • 使用证书创建应用程序网关
  • 添加侦听器和重定向规则
  • 使用默认后端池创建虚拟机规模集

如果没有 Azure 订阅,可在开始前创建一个试用帐户

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

本教程需要 Azure PowerShell 模块 1.0.0 或更高版本以创建证书并安装 IIS。 运行 Get-Module -ListAvailable Az 即可查找版本。 如果需要进行升级,请参阅 Install Azure PowerShell module(安装 Azure PowerShell 模块)。 若要运行本教程中的命令,还需要运行 Connect-AzAccount -Environment AzureChinaCloud 以创建与 Azure 的连接。

创建自签名证书

为供生产使用,应导入由受信任的提供程序签名的有效证书。 对于本教程,请使用 New-SelfSignedCertificate 创建自签名证书。 可以结合返回的指纹使用 Export-PfxCertificate,从证书导出 pfx 文件。

New-SelfSignedCertificate `
  -certstorelocation cert:\localmachine\my `
  -dnsname www.contoso.com

应会显示如下结果所示的内容:

PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\my

Thumbprint                                Subject
----------                                -------
E1E81C23B3AD33F9B4D1717B20AB65DBB91AC630  CN=www.contoso.com

使用指纹创建 pfx 文件:

$pwd = ConvertTo-SecureString -String "Azure123456!" -Force -AsPlainText
Export-PfxCertificate `
  -cert cert:\localMachine\my\E1E81C23B3AD33F9B4D1717B20AB65DBB91AC630 `
  -FilePath c:\appgwcert.pfx `
  -Password $pwd

创建应用程序网关

若要在创建的资源之间实现通信,需要设置虚拟网络。 在本示例中创建了两个子网:一个用于应用程序网关,另一个用于后端服务器。 可以在创建应用程序网关的同时创建虚拟网络。

  1. 登录到 Azure 门户

  2. 单击 Azure 门户左上角的“创建资源” 。

  3. 选择“网络” ,然后在“特色”列表中选择“应用程序网关” 。

  4. 输入应用程序网关的以下值:

    • myAppGateway - 应用程序网关的名称。

    • myResourceGroupAG - 新资源组。

      Create new application gateway

  5. 接受其他设置的默认值,然后单击“确定” 。

  6. 依次单击“选择虚拟网络”、“新建”,然后输入虚拟网络的以下值:

    • myVNet - 虚拟网络的名称。

    • 10.0.0.0/16 - 虚拟网络地址空间。

    • myAGSubnet - 子网名称。

    • 10.0.0.0/24 - 子网地址空间。

      Create virtual network

  7. 单击“确定” 创建虚拟网络和子网。

  8. 在“前端 IP 配置” 下,确保“IP 地址类型” 设置为“公用” ,并且选择了“新建” 。 输入 myAGPublicIPAddress 作为名称。 接受其他设置的默认值,然后单击“确定” 。

  9. 在“侦听器配置” 下,选择“HTTPS” ,然后选择“选择文件” 导航到 c:\appgwcert.pfx 文件并选择“打开” 。

  10. 键入 appgwcert 作为证书名称并键入 Azure123456! 作为密码。

  11. 将 Web 应用程序防火墙保持为已禁用状态,然后选择“确定” 。

  12. 检查摘要页上的设置,然后选择“确定” 创建网络资源和应用程序网关。 创建应用程序网关可能需要几分钟时间,请等到部署成功完成,然后转到下一部分。

添加子网

  1. 选择左侧菜单中的“所有资源” ,然后从资源列表中选择“myVNet” 。

  2. 选择“子网”,然后单击“子网”。

    Create subnet

  3. 输入 myBackendSubnet 作为子网名称。

  4. 输入 10.0.2.0/24 作为地址范围,然后选择“确定” 。

添加侦听器和重定向规则

添加侦听器

首先,为端口 80 添加名为 myListener 的侦听器。

  1. 打开“myResourceGroupAG” 资源组,然后选择“myAppGateway” 。
  2. 选择“侦听器” ,然后选择“+ 基本” 。
  3. 输入 MyListener 作为名称。
  4. 输入 httpPort 作为新的前端端口名称,并输入 80 作为端口。
  5. 确保将协议设置为“HTTP” ,然后选择“确定” 。

添加具有重定向配置的路由规则

  1. 在“myAppGateway” 上,选择“规则” ,然后选择“+请求路由规则” 。
  2. 对于“规则名称” ,键入“Rule2” 。
  3. 确保对于侦听器选择 MyListener 。
  4. 单击“后端目标” 选项卡,将“目标类型” 选为“重定向” 。
  5. 对于“重定向类型” ,选择“永久” 。
  6. 对于“重定向目标” ,选择“侦听器” 。
  7. 确保“目标侦听器” 设置为“appGatewayHttpListener” 。
  8. 对于“包含查询字符串” 和“包含路径” ,请选择“是” 。
  9. 选择 添加

注意

appGatewayHttpListener 是默认侦听器名称。 有关详细信息,请参阅应用程序网关侦听器配置

创建虚拟机规模集

在此示例中,将创建虚拟机规模集,以便为应用程序网关的后端池提供服务器。

  1. 在门户左上角,选择“+创建资源” 。
  2. 选择“计算” 。
  3. 在搜索框中,输入“规模集” ,并按 Enter。
  4. 选择“虚拟机规模集” ,然后选择“创建” 。
  5. 对于“虚拟机规模集名称” ,输入 myvmss 。
  6. 对于操作系统磁盘映像,请确保选中“Windows Server 2016 Datacenter” 。
  7. 对于“资源组” ,选择 myResourceGroupAG 。
  8. 对于“用户名” ,输入 azureuser 。
  9. 键入 Azure123456! 作为密码,并确认该密码。
  10. 对于“实例计数” ,确保值为“2” 。
  11. 对于“实例大小” ,选择“D2s_v3” 。
  12. 在“联网” 下,确保“选择负载均衡选项” 设置为“应用程序网关” 。
  13. 确保“应用程序网关” 设置为 myAppGateway 。
  14. 确保“子网” 设置为 myBackendSubnet 。
  15. 选择“创建” 。

将规模集与正确的后端池关联

虚拟机规模集门户 UI 可为规模集创建新后端池,但是要将它与现有 appGatewayBackendPool 关联。

  1. 打开“myResourceGroupAg” 资源组。
  2. 选择“myAppGateway” 。
  3. 选择“后端池” 。
  4. 选择“myAppGatewaymyvmss” 。
  5. 选择“从后端池中删除所有目标” 。
  6. 选择“保存” 。
  7. 此过程完成之后,选择“myAppGatewaymyvmss” 后端池,选择“删除” ,然后选择“确定” 以确认。
  8. 选择“appGatewayBackendPool” 。
  9. 在“目标” 下,选择“VMSS” 。
  10. 在“VMSS” 下,选择“myvmss” 。
  11. 在“网络接口配置” 下,选择“myvmssNic” 。
  12. 选择“保存” 。

升级规模集

最后,必须使用这些更改升级规模集。

  1. 选择“myvmss” 规模集。
  2. 在“设置” 下,选择“实例” 。
  3. 选择两个实例,然后选择“升级” 。
  4. 请选择“是”以确认。
  5. 此操作完成之后,返回到“myAppGateway” ,然后选择“后端池” 。 现在应看到“appGatewayBackendPool”具有两个目标,而“myAppGatewaymyvmss”没有目标。
  6. 选择“myAppGatewaymyvmss” ,然后选择“删除” 。
  7. 选择“确定”以确认。

安装 IIS

在规模集上安装 IIS 的一种简单方法是使用 PowerShell。

将以下代码粘贴到 PowerShell 窗口中,然后按 Enter。

$publicSettings = @{ "fileUris" = (,"https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/appgatewayurl.ps1"); 
  "commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File appgatewayurl.ps1" }
$vmss = Get-AzVmss -ResourceGroupName myResourceGroupAG -VMScaleSetName myvmss
Add-AzVmssExtension -VirtualMachineScaleSet $vmss `
  -Name "customScript" `
  -Publisher "Microsoft.Compute" `
  -Type "CustomScriptExtension" `
  -TypeHandlerVersion 1.8 `
  -Setting $publicSettings
Update-AzVmss `
  -ResourceGroupName myResourceGroupAG `
  -Name myvmss `
  -VirtualMachineScaleSet $vmss

升级规模集

使用 IIS 更改实例之后,必须再次使用此更改升级规模集。

  1. 选择“myvmss” 规模集。
  2. 在“设置” 下,选择“实例” 。
  3. 选择两个实例,然后选择“升级” 。
  4. 请选择“是”以确认。

测试应用程序网关

可以从应用程序网关“概述”页面获取应用程序公共 IP 地址。

  1. 选择“myAppGateway” 。

  2. 在“概述” 页面上,记下“前端公共 IP 地址” 下的 IP 地址。

  3. 复制该公共 IP 地址,并将其粘贴到浏览器的地址栏。 例如: http://52.170.203.149

    Secure warning

  4. 若要接受有关使用自签名证书的安全警告,请依次选择“详细信息”和“继续转到网页”。 随即显示受保护的 IIS 网站,如下例所示:

    Test base URL in application gateway

后续步骤

了解如何创建支持内部重定向的应用程序网关