Share via


Creare un gateway applicazione con reindirizzamento interno tramite l'interfaccia della riga di comando di Azure

È possibile usare l'interfaccia della riga di comando di Azure per configurare il reindirizzamento del traffico Web quando si crea un gateway applicazione. In questa esercitazione viene definito un pool back-end usando un set di scalabilità di macchine virtuali, quindi si configurano i listener e le regole in base ai domini di cui si è proprietari per assicurarsi che il traffico Web arrivi al pool appropriato. Questa esercitazione presuppone che l'utente sia proprietario di più domini e usi gli esempi di www.contoso.com e www.contoso.org.

In questo articolo vengono illustrate le operazioni seguenti:

  • Configurare la rete
  • Creare un gateway applicazione
  • Aggiungere listener e una regola di reindirizzamento
  • Creare un set di scalabilità di macchine virtuali con il pool back-end
  • Creare un record CNAME nel dominio

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 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. Successivamente, aggiungere la subnet denominata myBackendSubnet necessaria per i pool back-end dei server tramite 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 un 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.

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 80 \
  --http-settings-port 80 \
  --http-settings-protocol Http \
  --public-ip-address myAGPublicIPAddress

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 listener e regole

È necessario un listener per consentire al gateway applicazione di instradare il traffico in modo appropriato al pool back-end. In questa esercitazione vengono creati due listener per i due domini. In questo esempio vengono creati i listener per i domini www.contoso.com e www.contoso.org.

Aggiungere i listener back-end necessari per instradare il traffico usando az network application-gateway http-listener create.

az network application-gateway http-listener create \
  --name contosoComListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port appGatewayFrontendPort \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway \
  --host-name www.contoso.com
az network application-gateway http-listener create \
  --name contosoOrgListener \
  --frontend-ip appGatewayFrontendIP \
  --frontend-port appGatewayFrontendPort \
  --resource-group myResourceGroupAG \
  --gateway-name myAppGateway \
  --host-name www.contoso.org

Aggiungere la configurazione di reindirizzamento

Aggiungere la configurazione di reindirizzamento che invia il traffico da www.consoto.org al listener per www.contoso.com nel gateway applicazione usando az network application-gateway redirect-config create.

az network application-gateway redirect-config create \
  --name orgToCom \
  --gateway-name myAppGateway \
  --resource-group myResourceGroupAG \
  --type Permanent \
  --target-listener contosoListener \
  --include-path true \
  --include-query-string true

Aggiungere le regole di routing

Le regole vengono elaborate nell'ordine in cui sono state create e il traffico viene indirizzato usando la prima regola corrispondente all'URL inviato al gateway applicazione. Se ad esempio si dispone di due regole, una che usa un listener di base e una che usa un listener multisito, entrambe sulla stessa porta, la regola con il listener multisito deve essere elencata prima della regola con il listener di base per funzionare come previsto.

In questo esempio si creano due nuove regole e si elimina la regola predefinita creata. È possibile aggiungere la regola usando az network application-gateway rule create.

az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name contosoComRule \
  --resource-group myResourceGroupAG \
  --http-listener contosoComListener \
  --rule-type Basic \
  --address-pool appGatewayBackendPool
az network application-gateway rule create \
  --gateway-name myAppGateway \
  --name contosoOrgRule \
  --resource-group myResourceGroupAG \
  --http-listener contosoOrgListener \
  --rule-type Basic \
  --redirect-config orgToCom
az network application-gateway rule delete \
  --gateway-name myAppGateway \
  --name rule1 \
  --resource-group myResourceGroupAG

Creare set di scalabilità di macchine virtuali

In questo esempio si crea un set di scalabilità di macchine virtuali che supporta il pool back-end creato. Il set di scalabilità creato è denominato myvmss e contiene due istanze di macchina virtuale in cui è installato NGINX.

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

Eseguire questo comando nella finestra della shell:

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

Creare un record CNAME nel dominio

Dopo aver creato il gateway applicazione con l'indirizzo IP pubblico, è possibile ottenere l'indirizzo DNS e usarlo per creare un record CNAME nel dominio. Per ottenere l'indirizzo DNS del gateway applicazione è possibile usare az network public-ip show. Copiare il valore fqdn di DNSSettings e usarlo come valore del record CNAME creato. Non è consigliabile usare record A perché l'indirizzo VIP può cambiare quando il gateway applicazione viene riavviato.

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

Testare il gateway applicazione

Immettere il nome di dominio nella barra degli indirizzi del browser. Ad esempio, http://www.contoso.com.

Test contoso site in application gateway

Modificare l'indirizzo per l'altro dominio, ad esempio http://www.contoso.org. Il traffico dovrebbe essere stato reindirizzato al listener per www.contoso.com.

Passaggi successivi

Questa esercitazione ha descritto come:

  • Configurare la rete
  • Creare un gateway applicazione
  • Aggiungere listener e una regola di reindirizzamento
  • Creare un set di scalabilità di macchine virtuali con il pool back-end
  • Creare un record CNAME nel dominio