Creare un gateway applicazione con reindirizzamento da HTTP a HTTPS tramite l'interfaccia della riga di comando di Azure

È possibile usare l'interfaccia della riga di comando di Azure per creare un gateway applicazione con un certificato per la terminazione TLS/SSL. Viene usata una regola di routing per reindirizzare il traffico HTTP verso la porta HTTPS nel gateway applicazione. In questo esempio viene creato anche un set di scalabilità di macchine virtuali per il pool back-end del gateway applicazione che contiene due istanze di macchina virtuale.

In questo articolo vengono illustrate le operazioni seguenti:

  • Creare un certificato autofirmato
  • Configurare una rete
  • Creare un gateway applicazione con il certificato
  • Aggiungere un listener e una regola di reindirizzamento
  • Creare un set di scalabilità di macchine virtuali con il pool back-end predefinito

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

Prerequisiti

  • Per questa esercitazione è necessaria la versione 2.0.4 o successiva dell'interfaccia della riga di comando di Azure. Se si usa Azure Cloud Shell, la versione più recente è già installata.

Creare un certificato autofirmato

Per l'uso in ambiente di produzione è necessario importare un certificato valido firmato da un provider attendibile. Per questa esercitazione, creare un certificato autofirmato e un file con estensione pfx tramite il comando openssl.

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out appgwcert.crt

Immettere i valori appropriati per il certificato. È possibile accettare i valori predefiniti.

openssl pkcs12 -export -out appgwcert.pfx -inkey privateKey.key -in appgwcert.crt

Immettere la password per il certificato. In questo esempio viene usato Azure123456! .

Creare un gruppo di risorse

Un gruppo di risorse è un contenitore logico in cui vengono distribuite e gestite le risorse di Azure. Creare un gruppo di risorse usando az group create.

L'esempio seguente crea un gruppo di risorse denominato myResourceGroupAG nella località eastus.

az group create --name myResourceGroupAG --location eastus

Creare risorse di rete

Creare la rete virtuale denominata myVNet e la subnet denominata myAGSubnet usando az network vnet create. È quindi possibile aggiungere la subnet denominata myBackendSubnet necessaria dai server back-end usando az network vnet subnet create. Creare l'indirizzo IP pubblico denominato myAGPublicIPAddress tramite 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

Creare il gateway applicazione

È possibile usare az network application-gateway create per creare il gateway applicazione denominato myAppGateway. Quando si crea un gateway applicazione usando l'interfaccia della riga di comando di Azure, specificare le informazioni di configurazione, ad esempio le impostazioni relative a capacità, SKU e HTTP.

Il gateway applicazione viene assegnato alla subnet myAGSubnet e all'indirizzo IP pubblico myAGPublicIPAddress creati in precedenza. In questo esempio, associare il certificato creato e la relativa password quando si crea il gateway applicazione.

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!"

Il processo di creazione del gateway applicazione può richiedere alcuni minuti. Dopo aver creato il gateway applicazione, saranno disponibili le nuove funzionalità seguenti:

  • appGatewayBackendPool: un gateway applicazione deve avere almeno un pool di indirizzi back-end.
  • appGatewayBackendHttpSettings: specifica che per le comunicazioni vengono usati la porta 80 e il protocollo HTTP.
  • appGatewayHttpListener: il listener predefinito associato ad appGatewayBackendPool.
  • appGatewayFrontendIP: assegna myAGPublicIPAddress ad appGatewayHttpListener.
  • rule1: regola di routing predefinita associata ad appGatewayHttpListener.

Aggiungere un listener e una regola di reindirizzamento

Aggiungere la porta HTTP

È possibile usare az network application-gateway frontend-port create per aggiungere la porta HTTP al gateway applicazione.

az network application-gateway frontend-port create \
  --port 80 \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --name httpPort

Aggiungere il listener HTTP

È possibile usare az network application-gateway http-listener create per aggiungere il listener denominato myListener al gateway applicazione.

az network application-gateway http-listener create \
  --name myListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port httpPort \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway

Aggiungere la configurazione di reindirizzamento

Aggiungere la configurazione di reindirizzamento da HTTP a HTTPS al gateway applicazione tramite 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

Aggiungere la regola di routing

Aggiungere la regola di routing denominata rule2 con la configurazione di reindirizzamento al gateway applicazione con 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

Creare un set di scalabilità di macchine virtuali

In questo esempio viene creato un set di scalabilità di macchine virtuali denominato myvmss che fornisce server per il pool back-end nel gateway applicazione. Le macchine virtuali nel set di scalabilità sono associate a myBackendSubnet e appGatewayBackendPool. Per creare il set di scalabilità, è possibile usare 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

Installare 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" }'

Testare il gateway applicazione

Per ottenere l'indirizzo IP pubblico del gateway applicazione, è possibile usare az network public-ip show. Copiare l'indirizzo IP pubblico e quindi incollarlo nella barra degli indirizzi del browser.

az network public-ip show \
  --resource-group myResourceGroupAG \
  --name myAGPublicIPAddress \
  --query [ipAddress] \
  --output tsv

Secure warning

Per accettare l'avviso di sicurezza se si è usato un certificato autofirmato, selezionare Dettagli e quindi Continua per la pagina Web. Il sito NGINX protetto viene quindi visualizzato come illustrato nell'esempio seguente:

Test base URL in application gateway

Passaggi successivi