Creare un gateway applicazione per l'hosting di più applicazioni WebCreate an application gateway for hosting multiple web applications

L'hosting di più siti consente di distribuire più applicazioni Web nello stesso gateway applicazione.Multiple site hosting allows you to deploy more than one web application on the same application gateway. La presenza dell'intestazione host nella richiesta HTTP in ingresso consente di determinare il listener che riceverà il traffico.It relies on presence of host header in the incoming HTTP request, to determine which listener would receive traffic. Il listener indirizza quindi il traffico al pool back-end appropriato in base alla configurazione della definizione delle regole del gateway.The listener then directs traffic to appropriate backend pool as configured in the rules definition of the gateway. Nelle applicazioni Web abilitate per SSL il gateway applicazione sceglie il listener corretto per il traffico Web in base all'estensione dell'indicazione nome server (SNI).In SSL enabled web applications, application gateway relies on the Server Name Indication (SNI) extension to choose the correct listener for the web traffic. L'hosting di più siti viene comunemente usato per bilanciare il carico delle richieste per diversi domini Web tra vari pool di server back-end.A common use for multiple site hosting is to load balance requests for different web domains to different back-end server pools. Analogamente, lo stesso gateway applicazione potrebbe ospitare anche più sottodomini dello stesso dominio radice.Similarly multiple subdomains of the same root domain could also be hosted on the same application gateway.

ScenarioScenario

Nell'esempio seguente, il gateway applicazione gestisce il traffico per contoso.com e fabrikam.com con due pool di server back-end: il pool di server contoso e il pool di server fabrikam.In the following example, application gateway is serving traffic for contoso.com and fabrikam.com with two back-end server pools: contoso server pool and fabrikam server pool. Una configurazione simile potrebbe essere usata per ospitare sottodomini come app.contoso.com e blog.contoso.com.Similar setup could be used to host subdomains like app.contoso.com and blog.contoso.com.

imageURLroute

Prima di iniziareBefore you begin

  1. Installare la versione più recente dei cmdlet di Azure PowerShell usando l'Installazione guidata piattaforma Web.Install the latest version of the Azure PowerShell cmdlets by using the Web Platform Installer. È possibile scaricare e installare la versione più recente dalla sezione Windows PowerShell della Pagina di download.You can download and install the latest version from the Windows PowerShell section of the Downloads page.
  2. È necessario che i server aggiunti al pool back-end per l'uso del gateway applicazione esistano oppure che i relativi endpoint siano stati creati nella rete virtuale in una subnet separata o che sia stato assegnato loro un indirizzo IP/VIP pubblico.The servers added to the back-end pool to use the application gateway must exist or have their endpoints created either in the virtual network in a separate subnet or with a public IP/VIP assigned.

RequisitiRequirements

  • Pool di server back-end: elenco di indirizzi IP dei server back-end.Back-end server pool: The list of IP addresses of the back-end servers. Gli indirizzi IP elencati devono appartenere alla subnet della rete virtuale o devono essere indirizzi IP/VIP pubblici.The IP addresses listed should either belong to the virtual network subnet or should be a public IP/VIP. È possibile usare anche FQDN.FQDN can also be used.
  • Impostazioni del pool di server back-end: ogni pool ha impostazioni quali porta, protocollo e affinità basata sui cookie.Back-end server pool settings: Every pool has settings like port, protocol, and cookie-based affinity. Queste impostazioni sono associate a un pool e vengono applicate a tutti i server nel pool.These settings are tied to a pool and are applied to all servers within the pool.
  • Porta front-end: porta pubblica aperta sul gateway applicazione.Front-end port: This port is the public port that is opened on the application gateway. Il traffico raggiunge questa porta e quindi viene reindirizzato a uno dei server back-end.Traffic hits this port, and then gets redirected to one of the back-end servers.
  • Listener : ha una porta front-end, un protocollo (Http o Https, con distinzione tra maiuscole e minuscole) e il nome del certificato SSL (se si configura l'offload SSL).Listener: The listener has a front-end port, a protocol (Http or Https, these values are case-sensitive), and the SSL certificate name (if configuring SSL offload). Per i gateway applicazione abilitati per più siti vengono aggiunti anche indicatori SNI e nome host.For multi-site enabled application gateways, host name and SNI indicators are also added.
  • Regola: associa il listener e il pool di server back-end e definisce il pool di server back-end a cui deve essere indirizzato il traffico quando raggiunge un listener specifico.Rule: The rule binds the listener, the back-end server pool, and defines which back-end server pool the traffic should be directed to when it hits a particular listener. Le regole vengono elaborate nell'ordine in cui sono elencate e il traffico verrà indirizzato tramite la prima regola corrispondente indipendentemente dalla specificità.Rules are processed in the order they are listed, and traffic will be directed via the first rule that matches regardless of specificity. 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.For example, if you have a rule using a basic listener and a rule using a multi-site listener both on the same port, the rule with the multi-site listener must be listed before the rule with the basic listener in order for the multi-site rule to function as expected.

Creare un gateway applicazioneCreate an application gateway

Per creare un gateway applicazione, seguire questa procedura:The following are the steps needed to create an application gateway:

  1. Creare un gruppo di risorse per Gestione risorse.Create a resource group for Resource Manager.
  2. Creare una rete virtuale, le subnet e un indirizzo IP pubblico per il gateway applicazione.Create a virtual network, subnets, and public IP for the application gateway.
  3. Creare un oggetto di configurazione del gateway applicazione.Create an application gateway configuration object.
  4. Creare una risorsa del gateway applicazione.Create an application gateway resource.

Creare un gruppo di risorse per Gestione risorseCreate a resource group for Resource Manager

Assicurarsi di usare la versione più recente di Azure PowerShell.Make sure that you are using the latest version of Azure PowerShell. Altre informazioni sono disponibili in Uso di Azure PowerShell con Azure Resource Manager.More information is available at Using Windows PowerShell with Resource Manager.

Passaggio 1Step 1

Accedere ad AzureLog in to Azure

Login-AzureRmAccount

Verrà richiesto di eseguire l'autenticazione con le proprie credenziali.You are prompted to authenticate with your credentials.

Passaggio 2Step 2

Controllare le sottoscrizioni per l'account.Check the subscriptions for the account.

Get-AzureRmSubscription

Passaggio 3Step 3

Scegliere le sottoscrizioni ad Azure da usare.Choose which of your Azure subscriptions to use.

Select-AzureRmSubscription -Subscriptionid "GUID of subscription"

Passaggio 4Step 4

Creare un gruppo di risorse. Ignorare questo passaggio se si usa un gruppo di risorse esistente.Create a resource group (skip this step if you're using an existing resource group).

New-AzureRmResourceGroup -Name appgw-RG -location "West US"

In alternativa, è anche possibile creare tag del gruppo di risorse per il gateway applicazione:Alternatively you can also create tags for a resource group for application gateway:

$resourceGroup = New-AzureRmResourceGroup -Name appgw-RG -Location "West US" -Tags @{Name = "testtag"; Value = "Application Gateway multiple site"}

Gestione risorse di Azure richiede che tutti i gruppi di risorse specifichino un percorsoAzure Resource Manager requires that all resource groups specify a location. che viene usato come percorso predefinito per le risorse presenti in tale gruppo di risorse.This location is used as the default location for resources in that resource group. Assicurarsi che tutti i comandi per creare un gateway applicazione usino lo stesso gruppo di risorse.Make sure that all commands to create an application gateway use the same resource group.

Nell'esempio precedente è stato creato un gruppo di risorse denominato appgw-RG con la località Stati Uniti occidentali.In the example above, we created a resource group called appgw-RG with a location of West US.

Nota

Se è necessario configurare un probe personalizzato per il gateway applicazione, vedere Creare un probe personalizzato per il gateway applicazione di Azure con PowerShell per Azure Resource Manager.If you need to configure a custom probe for your application gateway, see Create an application gateway with custom probes by using PowerShell. Per altre informazioni, vedere l'articolo relativo a probe personalizzati e monitoraggio dell'integrità .Visit custom probes and health monitoring for more information.

Creare una rete virtuale e le subnetCreate a virtual network and subnets

L'esempio seguente illustra come creare una rete virtuale usando Gestione risorse.The following example shows how to create a virtual network by using Resource Manager. In questo passaggio vengono create due subnet.Two subnets are created in this step. La prima subnet è per il gateway applicazione stesso.The first subnet is for the application gateway itself. Il gateway applicazione richiede una propria subnet che deve contenere le sue istanze.Application gateway requires its own subnet to hold its instances. In tale subnet possono essere distribuiti solo altri gateway applicazione.Only other application gateways can be deployed in that subnet. La seconda subnet viene usata per contenere i server back-end dell'applicazione.The second subnet is used to hold the application backend servers.

Passaggio 1Step 1

Assegnare l'intervallo di indirizzi 10.0.0.0/24 alla variabile subnet da usare per contenere il gateway applicazione.Assign the address range 10.0.0.0/24 to the subnet variable to be used to hold the application gateway.

$subnet = New-AzureRmVirtualNetworkSubnetConfig -Name appgatewaysubnet -AddressPrefix 10.0.0.0/24

Passaggio 2Step 2

Assegnare l'intervallo di indirizzi 10.0.1.0/24 alla variabile subnet2 da usare per i pool back-end.Assign the address range 10.0.1.0/24 to the subnet2 variable to be used for the backend pools.

$subnet2 = New-AzureRmVirtualNetworkSubnetConfig -Name backendsubnet -AddressPrefix 10.0.1.0/24

Passaggio 3Step 3

Creare una rete virtuale denominata appgwvnet nel gruppo di risorse appgw-rg per l'area Stati Uniti occidentali usando il prefisso 10.0.0.0/16 con le subnet 10.0.0.0/24 e 10.0.1.0/24.Create a virtual network named appgwvnet in resource group appgw-rg for the West US region using the prefix 10.0.0.0/16 with subnet 10.0.0.0/24, and 10.0.1.0/24.

$vnet = New-AzureRmVirtualNetwork -Name appgwvnet -ResourceGroupName appgw-RG -Location "West US" -AddressPrefix 10.0.0.0/16 -Subnet $subnet,$subnet2

Passaggio 4Step 4

Assegnare una variabile di subnet per la creazione di un gateway applicazione nei passaggi successivi.Assign a subnet variable for the next steps, which creates an application gateway.

$appgatewaysubnet = Get-AzureRmVirtualNetworkSubnetConfig -Name appgatewaysubnet -VirtualNetwork $vnet
$backendsubnet = Get-AzureRmVirtualNetworkSubnetConfig -Name backendsubnet -VirtualNetwork $vnet

Creare un indirizzo IP pubblico per la configurazione front-endCreate a public IP address for the front-end configuration

Creare una risorsa IP pubblica denominata publicIP01 nel gruppo di risorse appgw-rg per l'area Stati Uniti occidentali.Create a public IP resource publicIP01 in resource group appgw-rg for the West US region.

$publicip = New-AzureRmPublicIpAddress -ResourceGroupName appgw-RG -name publicIP01 -location "West US" -AllocationMethod Dynamic

All'avvio del servizio viene assegnato un indirizzo IP al gateway applicazione.An IP address is assigned to the application gateway when the service starts.

Creare la configurazione del gateway applicazioneCreate application gateway configuration

È necessario impostare tutti gli elementi di configurazione prima di creare il gateway applicazione.You have to set up all configuration items before creating the application gateway. La procedura seguente consente di creare gli elementi di configurazione necessari per una risorsa del gateway applicazione.The following steps create the configuration items that are needed for an application gateway resource.

Passaggio 1Step 1

Creare una configurazione IP del gateway applicazione denominata gatewayIP01.Create an application gateway IP configuration named gatewayIP01. All'avvio, il gateway applicazione seleziona un indirizzo IP dalla subnet configurata e instrada il traffico di rete agli indirizzi IP nel pool di indirizzi IP back-end.When application gateway starts, it picks up an IP address from the subnet configured and route network traffic to the IP addresses in the back-end IP pool. Tenere presente che ogni istanza ha un indirizzo IP.Keep in mind that each instance takes one IP address.

$gipconfig = New-AzureRmApplicationGatewayIPConfiguration -Name gatewayIP01 -Subnet $appgatewaysubnet

Passaggio 2Step 2

Configurare i pool di indirizzi IP back-end denominati pool01 e pool2 con gli indirizzi IP 134.170.185.46, 134.170.188.221, 134.170.185.50 per pool1 e 134.170.186.46, 134.170.189.221, 134.170.186.50 per pool2.Configure the back-end IP address pool named pool01 and pool2 with IP addresses 134.170.185.46, 134.170.188.221, 134.170.185.50 for pool1 and 134.170.186.46, 134.170.189.221, 134.170.186.50 for pool2.

$pool1 = New-AzureRmApplicationGatewayBackendAddressPool -Name pool01 -BackendIPAddresses 10.0.1.100, 10.0.1.101, 10.0.1.102
$pool2 = New-AzureRmApplicationGatewayBackendAddressPool -Name pool02 -BackendIPAddresses 10.0.1.103, 10.0.1.104, 10.0.1.105

Questo esempio mostra due pool back-end che indirizzano il traffico di rete in base al sito richiesto.In this example, there are two back-end pools to route network traffic based on the requested site. Un pool riceve il traffico dal sito "contoso.com" e l'altro riceve il traffico dal sito "fabrikam.com".One pool receives traffic from site "contoso.com" and other pool receives traffic from site "fabrikam.com". È necessario sostituire gli indirizzi IP precedenti e aggiungere gli endpoint di indirizzi IP dell'applicazione.You have to replace the preceding IP addresses to add your own application IP address endpoints. Al posto di indirizzi IP interni si potrebbero usare per le istanze back-end anche indirizzi IP pubblici, FQDN o la scheda di interfaccia di rete di una VM.In place of internal IP addresses, you could also use public IP addresses, FQDN, or a VM's NIC for backend instances. Per specificare FQDN invece di indirizzi IP in PowerShell usare il parametro "-BackendFQDNs".To specify FQDNs instead of IPs in PowerShell use "-BackendFQDNs" parameter.

Passaggio 3Step 3

Configurare le impostazioni poolsetting01 e poolsetting02 del gateway applicazione per il traffico di rete con carico bilanciato nel pool back-end.Configure application gateway setting poolsetting01 and poolsetting02 for the load-balanced network traffic in the back-end pool. In questo esempio vengono configurate diverse impostazioni per i pool back-end.In this example, you configure different back-end pool settings for the back-end pools. Ogni pool back-end può avere un'impostazione del pool back-end dedicata.Each back-end pool can have its own back-end pool setting.

$poolSetting01 = New-AzureRmApplicationGatewayBackendHttpSettings -Name "besetting01" -Port 80 -Protocol Http -CookieBasedAffinity Disabled -RequestTimeout 120
$poolSetting02 = New-AzureRmApplicationGatewayBackendHttpSettings -Name "besetting02" -Port 80 -Protocol Http -CookieBasedAffinity Enabled -RequestTimeout 240

Passaggio 4Step 4

Configurare l'indirizzo IP front-end con l'endpoint di indirizzo IP pubblico.Configure the front-end IP with public IP endpoint.

$fipconfig01 = New-AzureRmApplicationGatewayFrontendIPConfig -Name "frontend1" -PublicIPAddress $publicip

Passaggio 5Step 5

Configurare la porta front-end per un gateway applicazione.Configure the front-end port for an application gateway.

$fp01 = New-AzureRmApplicationGatewayFrontendPort -Name "fep01" -Port 443

Passaggio 6Step 6

Configurare due certificati SSL per i due siti Web che verranno supportati in questo esempio:Configure two SSL certificates for the two websites we are going to support in this example. un certificato per il traffico di contoso.com e l'altro per il traffico di fabrikam.com.One certificate is for contoso.com traffic and the other is for fabrikam.com traffic. Questi certificati per i siti Web devono essere rilasciati da un'autorità di certificazione.These certificates should be a Certificate Authority issued certificates for your websites. I certificati autofirmati sono supportati, ma non sono consigliati per il traffico di produzione.Self-signed certificates are supported but not recommended for production traffic.

$cert01 = New-AzureRmApplicationGatewaySslCertificate -Name contosocert -CertificateFile <file path> -Password <password>
$cert02 = New-AzureRmApplicationGatewaySslCertificate -Name fabrikamcert -CertificateFile <file path> -Password <password>

Passaggio 7Step 7

Configurare due listener per i due siti Web dell'esempio.Configure two listeners for the two web sites in this example. Questo passaggio configura i listener per l'indirizzo IP pubblico, la porta e l'host usati per ricevere il traffico in ingresso.This step configures the listeners for public IP address, port, and host used to receive incoming traffic. Il parametro HostName è necessario per il supporto di più siti e deve essere impostato sul sito Web appropriato per cui viene ricevuto il traffico.HostName parameter is required for multiple site support and should be set to the appropriate website for which the traffic is received. Il parametro RequireServerNameIndication dovrà essere impostato su true per i siti Web in cui è necessario il supporto per SSL per uno scenario di hosting multiplo.RequireServerNameIndication parameter should be set to true for websites that need support for SSL in a multiple host scenario. Se è necessario il supporto per SSL, si deve specificare anche il certificato SSL che viene usato per proteggere il traffico per l'applicazione Web.If SSL support is required, you also need to specify the SSL certificate that is used to secure traffic for that web application. La combinazione di FrontendIPConfiguration, FrontendPort e HostName deve essere univoca per un listener.The combination of FrontendIPConfiguration, FrontendPort, and HostName must be unique to a listener. Ogni listener può supportare un certificato.Each listener can support one certificate.

$listener01 = New-AzureRmApplicationGatewayHttpListener -Name "listener01" -Protocol Https -FrontendIPConfiguration $fipconfig01 -FrontendPort $fp01 -HostName "contoso11.com" -RequireServerNameIndication true  -SslCertificate $cert01
$listener02 = New-AzureRmApplicationGatewayHttpListener -Name "listener02" -Protocol Https -FrontendIPConfiguration $fipconfig01 -FrontendPort $fp01 -HostName "fabrikam11.com" -RequireServerNameIndication true -SslCertificate $cert02

Passaggio 8Step 8

Creare l'impostazione di due regole per le due applicazioni Web di questo esempio.Create two rule setting for the two web applications in this example. Una regola collega listener, pool back-end e impostazioni HTTP.A rule ties together listeners, backend pools and http settings. Questo passaggio configura il gateway applicazione per l'uso di una regola di routing Basic per ogni sito Web.This step configures the application gateway to use Basic routing rule, one for each website. Il traffico verso ogni sito Web viene ricevuto dal rispettivo listener configurato e quindi indirizzato al pool back-end configurato usando le proprietà specificate in BackendHttpSettings.Traffic to each website is received by its configured listener, and is then directed to its configured backend pool, using the properties specified in the BackendHttpSettings.

$rule01 = New-AzureRmApplicationGatewayRequestRoutingRule -Name "rule01" -RuleType Basic -HttpListener $listener01 -BackendHttpSettings $poolSetting01 -BackendAddressPool $pool1
$rule02 = New-AzureRmApplicationGatewayRequestRoutingRule -Name "rule02" -RuleType Basic -HttpListener $listener02 -BackendHttpSettings $poolSetting02 -BackendAddressPool $pool2

Passaggio 9:Step 9

Configurare il numero di istanze e le dimensioni per il gateway applicazione.Configure the number of instances and size for the application gateway.

$sku = New-AzureRmApplicationGatewaySku -Name "Standard_Medium" -Tier Standard -Capacity 2

Creare il gateway applicazioneCreate application gateway

Creare un gateway applicazione con tutti gli oggetti di configurazione illustrati nei passaggi precedenti.Create an application gateway with all configuration objects from the preceding steps.

$appgw = New-AzureRmApplicationGateway -Name appgwtest -ResourceGroupName appgw-RG -Location "West US" -BackendAddressPools $pool1,$pool2 -BackendHttpSettingsCollection $poolSetting01, $poolSetting02 -FrontendIpConfigurations $fipconfig01 -GatewayIpConfigurations $gipconfig -FrontendPorts $fp01 -HttpListeners $listener01, $listener02 -RequestRoutingRules $rule01, $rule02 -Sku $sku -SslCertificates $cert01, $cert02

Importante

Il provisioning del gateway applicazione è un'operazione con esecuzione prolungata il cui completamento può richiedere tempo.Application Gateway provisioning is a long running operation and may take some time to complete.

Ottenere il nome DNS del gateway applicazioneGet application gateway DNS name

Dopo avere creato il gateway, il passaggio successivo prevede la configurazione del front-end per la comunicazione.Once the gateway is created, the next step is to configure the front end for communication. Quando si usa un IP pubblico, il gateway applicazione richiede un nome DNS assegnato in modo dinamico, non descrittivo.When using a public IP, application gateway requires a dynamically assigned DNS name, which is not friendly. Per assicurarsi che gli utenti finali possano raggiungere il gateway applicazione, è possibile usare un record CNAME per fare riferimento all'endpoint pubblico del gateway applicazione.To ensure end users can hit the application gateway, a CNAME record can be used to point to the public endpoint of the application gateway. Configurazione di un nome di dominio personalizzato in Azure.Configuring a custom domain name for in Azure. A questo scopo, recuperare i dettagli del gateway applicazione e il nome DNS e l'IP associati, usando l'elemento PublicIPAddress collegato al gateway applicazione.To do this, retrieve details of the application gateway and its associated IP/DNS name using the PublicIPAddress element attached to the application gateway. Il nome DNS del gateway applicazione dovrà essere usato per creare un record CNAME che associa le due applicazioni Web a questo nome DNS.The application gateway's DNS name should be used to create a CNAME record, which points the two web applications to this DNS name. Non è consigliabile usare record A perché l'indirizzo VIP può cambiare al riavvio del gateway applicazione.The use of A-records is not recommended since the VIP may change on restart of application gateway.

Get-AzureRmPublicIpAddress -ResourceGroupName appgw-RG -Name publicIP01
Name                     : publicIP01
ResourceGroupName        : appgw-RG
Location                 : westus
Id                       : /subscriptions/<subscription_id>/resourceGroups/appgw-RG/providers/Microsoft.Network/publicIPAddresses/publicIP01
Etag                     : W/"00000d5b-54ed-4907-bae8-99bd5766d0e5"
ResourceGuid             : 00000000-0000-0000-0000-000000000000
ProvisioningState        : Succeeded
Tags                     : 
PublicIpAllocationMethod : Dynamic
IpAddress                : xx.xx.xxx.xx
PublicIpAddressVersion   : IPv4
IdleTimeoutInMinutes     : 4
IpConfiguration          : {
                                "Id": "/subscriptions/<subscription_id>/resourceGroups/appgw-RG/providers/Microsoft.Network/applicationGateways/appgwtest/frontendIP
                            Configurations/frontend1"
                            }
DnsSettings              : {
                                "Fqdn": "00000000-0000-xxxx-xxxx-xxxxxxxxxxxx.cloudapp.net"
                            }

Passaggi successiviNext steps

Informazioni su come proteggere i siti Web con Gateway applicazione: firewall applicazione WebLearn how to protect your websites with Application Gateway - Web Application Firewall