Compartilhar via


Criar um gateway de aplicativo e reescrever cabeçalhos HTTP

É possível usar o Azure PowerShell para configurar regras reescrever os cabeçalhos de solicitação e de resposta HTTP quando você cria o novo SKU de gateway de aplicativo com dimensionamento automático e redundância de zona

Neste artigo, você aprenderá a:

  • Criar uma rede virtual de dimensionamento automático
  • Criar um IP público reservado
  • Configurar a infraestrutura do gateway de aplicativo
  • Especificar a configuração da regra de reescrita do cabeçalho HTTP
  • Especificar o dimensionamento automático
  • Criar o gateway de aplicativo
  • Testar o gateway de aplicativo

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

Pré-requisitos

Este artigo requer que você execute o Azure PowerShell localmente. É necessário ter instalado o módulo Az versão 1.0.0 ou posterior. Execute Import-Module Az e, em seguida, Get-Module Az para localizar a versão. Se você precisa atualizar, consulte Instalar o módulo do Azure PowerShell. Depois de verificar a versão do PowerShell, execute Login-AzAccount para criar uma conexão com o Azure.

Entrar no Azure

Connect-AzAccount
Select-AzSubscription -Subscription "<sub name>"

Criar um grupo de recursos

Crie um grupo de recursos em um dos locais disponíveis.

$location = "East US 2"
$rg = "<rg name>"

#Create a new Resource Group
New-AzResourceGroup -Name $rg -Location $location

Criar uma rede virtual

Crie uma rede virtual com uma sub-rede dedicada para um gateway de aplicativo com dimensionamento automático. Atualmente, apenas um gateway de aplicativo com dimensionamento automático pode ser implantado em cada sub-rede dedicada.

#Create VNet with two subnets
$sub1 = New-AzVirtualNetworkSubnetConfig -Name "AppGwSubnet" -AddressPrefix "10.0.0.0/24"
$sub2 = New-AzVirtualNetworkSubnetConfig -Name "BackendSubnet" -AddressPrefix "10.0.1.0/24"
$vnet = New-AzvirtualNetwork -Name "AutoscaleVNet" -ResourceGroupName $rg `
       -Location $location -AddressPrefix "10.0.0.0/16" -Subnet $sub1, $sub2

Criar um IP público reservado

Especifique o método de alocação de PublicIPAddress como Estático. O VIP de um gateway de aplicativo com dimensionamento automático só pode ser estático. Não há suporte para IPs dinâmicos. Há suporte somente para o SKU de PublicIpAddress padrão.

#Create static public IP
$pip = New-AzPublicIpAddress -ResourceGroupName $rg -name "AppGwVIP" `
       -location $location -AllocationMethod Static -Sku Standard

Recuperar detalhes

Recupere detalhes do grupo de recursos, da sub-rede e do IP em um objeto local para criar os detalhes de configuração do IP do gateway de aplicativo.

$resourceGroup = Get-AzResourceGroup -Name $rg
$publicip = Get-AzPublicIpAddress -ResourceGroupName $rg -name "AppGwVIP"
$vnet = Get-AzvirtualNetwork -Name "AutoscaleVNet" -ResourceGroupName $rg
$gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name "AppGwSubnet" -VirtualNetwork $vnet

Configurar a infraestrutura

Defina a configuração de IP, a configuração de IP de front-end, o pool de back-end, as configurações de HTTP, o certificado, a porta e o ouvinte em formato idêntico ao do gateway de aplicativo Standard existente. O novo SKU segue o mesmo modelo de objeto do SKU Standard.

$ipconfig = New-AzApplicationGatewayIPConfiguration -Name "IPConfig" -Subnet $gwSubnet
$fip = New-AzApplicationGatewayFrontendIPConfig -Name "FrontendIPCOnfig" -PublicIPAddress $publicip
$pool = New-AzApplicationGatewayBackendAddressPool -Name "Pool1" `
       -BackendIPAddresses testbackend1.westus.cloudapp.azure.com, testbackend2.westus.cloudapp.azure.com
$fp01 = New-AzApplicationGatewayFrontendPort -Name "HTTPPort" -Port 80

$listener01 = New-AzApplicationGatewayHttpListener -Name "HTTPListener" `
             -Protocol Http -FrontendIPConfiguration $fip -FrontendPort $fp01

$setting = New-AzApplicationGatewayBackendHttpSettings -Name "BackendHttpSetting1" `
          -Port 80 -Protocol Http -CookieBasedAffinity Disabled

Especificar a configuração da regra de reescrita do cabeçalho HTTP

Configure os novos objetos necessários para reescrever os cabeçalhos HTTP:

  • RequestHeaderConfiguration: este objeto é usado para especificar os campos de cabeçalho de solicitação que você pretende reescrever e o novo valor que deve ser reescrito nos cabeçalhos originais.

  • ResponseHeaderConfiguration: este objeto é usado para especificar os campos de cabeçalho de resposta que você pretende reescrever e o novo valor que deve ser reescrito nos cabeçalhos originais.

  • ActionSet: este objeto contém as configurações dos cabeçalhos de solicitação e de resposta especificados acima.

  • RewriteRule: este objeto contém todos os actionSets especificados acima.

  • RewriteRuleSet- este objeto contém todos os rewriteRules e deverá ser anexado a uma regra de roteamento de solicitação - básica ou com base no caminho.

    $requestHeaderConfiguration = New-AzApplicationGatewayRewriteRuleHeaderConfiguration -HeaderName "X-isThroughProxy" -HeaderValue "True"
    $responseHeaderConfiguration = New-AzApplicationGatewayRewriteRuleHeaderConfiguration -HeaderName "Strict-Transport-Security" -HeaderValue "max-age=31536000"
    $actionSet = New-AzApplicationGatewayRewriteRuleActionSet -RequestHeaderConfiguration $requestHeaderConfiguration -ResponseHeaderConfiguration $responseHeaderConfiguration    
    $rewriteRule = New-AzApplicationGatewayRewriteRule -Name rewriteRule1 -ActionSet $actionSet    
    $rewriteRuleSet = New-AzApplicationGatewayRewriteRuleSet -Name rewriteRuleSet1 -RewriteRule $rewriteRule
    

Especificar a regra de roteamento

Criar uma regra de roteamento de solicitação. Depois de criada, essa configuração de reescrita é anexada ao ouvinte de origem por meio de uma regra de roteamento. Ao usar uma regra de roteamento básica, a configuração de redirecionamento é associada a um ouvinte de origem e será uma reescrita de cabeçalho global. Quando uma regra de roteamento com base em caminho é usada, a configuração de redirecionamento será definida no mapa de caminho de URL. Então, ela se aplica somente a área de caminho específico de um site. Abaixo, uma regra de roteamento básica é criada e o conjunto de regras de reescrita é anexado.

$rule01 = New-AzApplicationGatewayRequestRoutingRule -Name "Rule1" -RuleType basic `
         -BackendHttpSettings $setting -HttpListener $listener01 -BackendAddressPool $pool -RewriteRuleSet $rewriteRuleSet

Especificar o dimensionamento automático

Agora, você pode especificar a configuração de dimensionamento automático do gateway de aplicativo. Há suporte para dois tipos de configuração de dimensionamento automático:

  • Modo de capacidade fixa. Nesse modo, o gateway de aplicativo não é escalado automaticamente e opera com uma capacidade de unidade de escala fixa.

    $sku = New-AzApplicationGatewaySku -Name Standard_v2 -Tier Standard_v2 -Capacity 2
    
  • Modo de dimensionamento automático. Neste modo, o gateway de aplicativo é dimensionado automaticamente com base no padrão de tráfego de aplicativo.

    $autoscaleConfig = New-AzApplicationGatewayAutoscaleConfiguration -MinCapacity 2
    $sku = New-AzApplicationGatewaySku -Name Standard_v2 -Tier Standard_v2
    

Criar o gateway de aplicativo

Crie o gateway de aplicativo e inclua zonas de redundância e a configuração de dimensionamento automático.

$appgw = New-AzApplicationGateway -Name "AutoscalingAppGw" -Zone 1,2,3 -ResourceGroupName $rg -Location $location -BackendAddressPools $pool -BackendHttpSettingsCollection $setting -GatewayIpConfigurations $ipconfig -FrontendIpConfigurations $fip -FrontendPorts $fp01 -HttpListeners $listener01 -RequestRoutingRules $rule01 -Sku $sku -AutoscaleConfiguration $autoscaleConfig -RewriteRuleSet $rewriteRuleSet

Testar o gateway de aplicativo

Use Get-AzPublicIPAddress para obter o endereço IP público do gateway de aplicativo. Copie o endereço IP público ou o nome DNS e cole-o na barra de endereços do seu navegador.

Get-AzPublicIPAddress -ResourceGroupName $rg -Name AppGwVIP

Limpar os recursos

Primeiro, explore os recursos criados com o gateway de aplicativo. Em seguida, quando não for mais necessário, você pode usar o comando Remove-AzResourceGroup para remover o grupo de recursos, o gateway de aplicativo e todos os recursos relacionados.

Remove-AzResourceGroup -Name $rg

Próximas etapas