Criar um gateway de aplicativo com HTTP para redirecionamento HTTPS usando a CLI do Azure
Você pode usar a CLI do Azure para criar um gateway de aplicativo com um certificado para terminação TLS/SSL. Uma regra de roteamento é usada para redirecionar o tráfego HTTP para a porta HTTPS no gateway do seu aplicativo. Neste exemplo, você também pode criar um Conjunto de Dimensionamento de Máquinas Virtuais para pool de back-end do gateway do aplicativo que contém duas instâncias de máquina virtual.
Neste artigo, você aprenderá como:
- Criar um certificado autoassinado
- Configurar uma rede
- Criar um gateway de aplicativo com o certificado
- Adicionar um ouvinte e uma regra de direcionamento
- Criar um Conjunto de Dimensionamento de Máquinas Virtuais com o pool de back-end padrão
Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.
Pré-requisitos
Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, confira Início Rápido para Bash no Azure Cloud Shell.
Se preferir executar os comandos de referência da CLI localmente, instale a CLI do Azure. Para execuções no Windows ou no macOS, considere executar a CLI do Azure em um contêiner do Docker. Para obter mais informações, confira Como executar a CLI do Azure em um contêiner do Docker.
Se estiver usando uma instalação local, entre com a CLI do Azure usando o comando az login. Para concluir o processo de autenticação, siga as etapas exibidas no terminal. Para ver outras opções de entrada, confira Conectar-se com a CLI do Azure.
Quando solicitado, instale a extensão da CLI do Azure no primeiro uso. Para obter mais informações sobre extensões, confira Usar extensões com a CLI do Azure.
Execute az version para localizar a versão e as bibliotecas dependentes que estão instaladas. Para fazer a atualização para a versão mais recente, execute az upgrade.
- Este tutorial requer a versão 2.0.4 ou posterior da CLI do Azure. Se você está usando o Azure Cloud Shell, a versão mais recente já está instalada.
Criará um certificado autoassinado
Para uso em produção, você deve importar um certificado válido assinado por um fornecedor confiável. Para este tutorial, você pode criar um certificado autoassinado e o arquivo pfx usando o comando openssl.
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out appgwcert.crt
Insira os valores que fazem sentido para o seu certificado. Você pode aceitar os valores padrão.
openssl pkcs12 -export -out appgwcert.pfx -inkey privateKey.key -in appgwcert.crt
Insira a senha para o certificado. Neste exemplo, Azure123456! é usado.
Criar um grupo de recursos
Um grupo de recursos é um contêiner lógico no qual os recursos do Azure são implantados e gerenciados. Criar um grupo de recursos usando az group create.
O exemplo a seguir cria um grupo de recursos denominado myResourceGroupAG no local eastus.
az group create --name myResourceGroupAG --location eastus
Criar recursos da rede
Criar a rede virtual denominada myVNet e a sub-rede denominada myAGSubnet usando az network vnet create. Em seguida, você pode adicionar a sub-rede chamada myBackendSubnet necessária para os servidores back-end usando az network vnet subnet create. Crie o endereço IP público denominado myAGPublicIPAddress usando az network public-ip create.
az network vnet create \
--name myVNet \
--resource-group myResourceGroupAG \
--location eastus \
--address-prefix 10.0.0.0/16 \
--subnet-name myAGSubnet \
--subnet-prefix 10.0.1.0/24
az network vnet subnet create \
--name myBackendSubnet \
--resource-group myResourceGroupAG \
--vnet-name myVNet \
--address-prefix 10.0.2.0/24
az network public-ip create \
--resource-group myResourceGroupAG \
--name myAGPublicIPAddress
Criar o gateway de aplicativo
Você pode usar az network application-gateway create para criar o gateway do aplicativo denominado myAppGateway. Quando você cria um gateway de aplicativo usando a CLI do Azure, você pode especificar informações de configuração, como configurações de HTTP, sku e capacidade.
O gateway de aplicativo é atribuído a myAGSubnet e myAGPublicIPAddress que você criou anteriormente. Neste exemplo, você associa o certificado que você criou e sua senha ao criar o gateway de aplicativo.
az network application-gateway create \
--name myAppGateway \
--location eastus \
--resource-group myResourceGroupAG \
--vnet-name myVNet \
--subnet myAGsubnet \
--capacity 2 \
--sku Standard_Medium \
--http-settings-cookie-based-affinity Disabled \
--frontend-port 443 \
--http-settings-port 80 \
--http-settings-protocol Http \
--public-ip-address myAGPublicIPAddress \
--cert-file appgwcert.pfx \
--cert-password "Azure123456!"
O gateway de aplicativo pode demorar vários minutos para ser criado. Depois de criar o gateway de aplicativo, você pode ver esses novos recursos:
- appGatewayBackendPool - Um gateway de aplicativo deve ter pelo menos um pool de endereços de back-end.
- appGatewayBackendHttpSettings - Especifica que a porta 80 e um protocolo HTTP são usados para comunicação.
- appGatewayHttpListener - O ouvinte padrão associado ao appGatewayBackendPool.
- appGatewayFrontendIP - Atribui myAGPublicIPAddress ao appGatewayHttpListener.
- rule1 - A regra padrão de roteamento que está associada ao appGatewayHttpListener.
Adicionar um ouvinte e uma regra de direcionamento
Adicionar a porta HTTP
Você pode usar az network application-gateway frontend-port create para adicionar a porta HTTP ao gateway de aplicativo.
az network application-gateway frontend-port create \
--port 80 \
--gateway-name myAppGateway \
--resource-group myResourceGroupAG \
--name httpPort
Adicione o ouvinte HTTP nativo
É possível usar az network application-gateway http-listener create para adicionar o ouvinte chamado myListener ao gateway de aplicativo.
az network application-gateway http-listener create \
--name myListener \
--frontend-ip appGatewayFrontendIP \
--frontend-port httpPort \
--resource-group myResourceGroupAG \
--gateway-name myAppGateway
Adicionar a configuração de redirecionamento
Adicione a configuração de redirecionamento de HTTP para HTTPS ao gateway de aplicativo usando az network application-gateway redirect-config create.
az network application-gateway redirect-config create \
--name httpToHttps \
--gateway-name myAppGateway \
--resource-group myResourceGroupAG \
--type Permanent \
--target-listener appGatewayHttpListener \
--include-path true \
--include-query-string true
Adicionar a regra de roteamento
Adicione a regra de roteamento chamada rule2 com a configuração de redirecionamento ao gateway de aplicativo usando az network application-gateway rule create.
az network application-gateway rule create \
--gateway-name myAppGateway \
--name rule2 \
--resource-group myResourceGroupAG \
--http-listener myListener \
--rule-type Basic \
--redirect-config httpToHttps
Crie um conjunto de dimensionamento de máquinas virtuais
Neste exemplo, você criará um Conjunto de Dimensionamento de Máquinas Virtuais chamado myvmss que fornece servidores para o pool de back-end no gateway de aplicativo. As máquinas virtuais no conjunto de dimensionamento são associadas com myBackendSubnet e appGatewayBackendPool. Para criar um conjunto de dimensionamento, você pode usar az vmss create.
az vmss create \
--name myvmss \
--resource-group myResourceGroupAG \
--image Ubuntu2204 \
--admin-username azureuser \
--admin-password Azure123456! \
--instance-count 2 \
--vnet-name myVNet \
--subnet myBackendSubnet \
--vm-sku Standard_DS2 \
--upgrade-policy-mode Automatic \
--app-gateway myAppGateway \
--backend-pool-name appGatewayBackendPool
Instalar o NGINX
az vmss extension set \
--publisher Microsoft.Azure.Extensions \
--version 2.0 \
--name CustomScript \
--resource-group myResourceGroupAG \
--vmss-name myvmss \
--settings '{ "fileUris": ["https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/install_nginx.sh"],
"commandToExecute": "./install_nginx.sh" }'
Testar o gateway de aplicativo
Para obter o endereço IP público do gateway de aplicativo, você pode usar az network public-ip show. Copie o endereço IP público e cole-o na barra de endereços do seu navegador.
az network public-ip show \
--resource-group myResourceGroupAG \
--name myAGPublicIPAddress \
--query [ipAddress] \
--output tsv
Para aceitar o aviso de segurança se você usou um certificado autoassinado, selecione Detalhes e depois Prosseguir para a página da Web. Seu site de NGINX protegido é exibido, como no exemplo a seguir: