Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa guida introduttiva illustra come usare Bicep per creare un Azure Front Door con un'app Web come origine.
Nota
Per i carichi di lavoro Web, è consigliabile usare Protezione DDoS di Azure e un web application firewall per proteggersi dagli attacchi DDoS emergenti. Un'altra opzione consiste nell'usare Frontdoor di Azure insieme a un web application firewall. Frontdoor di Azure offre protezione a livello di piattaforma dagli attacchi DDoS a livello di rete. Per altre informazioni, vedere Baseline di sicurezza per i servizi di Azure.
Bicep è un linguaggio specifico di dominio (DSL) che usa la sintassi dichiarativa per distribuire le risorse di Azure. Offre una sintassi concisa, una sicurezza dei tipi affidabile e supporto per il riutilizzo del codice. Bicep offre la migliore esperienza di creazione per le soluzioni di infrastruttura come codice in Azure.
Prerequisiti
- Una sottoscrizione di Azure attiva. Crea un account gratuito se non ne hai uno.
- Indirizzo IP o FQDN di un sito Web o di un'applicazione Web.
Esaminare il file Bicep
Il file Bicep usato in questa guida introduttiva è disponibile nei Modelli di avvio rapido di Azure.
In questa guida introduttiva si creerà un profilo di Azure Front Door, un servizio app di Azure e si configurerà il servizio app per verificare che il traffico provenga dall'origine di Azure Front Door.
@description('The location into which regionally scoped resources should be deployed. Note that Front Door is a global resource.')
param location string = resourceGroup().location
@description('The name of the App Service application to create. This must be globally unique.')
param appName string = 'myapp-${uniqueString(resourceGroup().id)}'
@description('The name of the SKU to use when creating the App Service plan.')
param appServicePlanSkuName string = 'S1'
@description('The number of worker instances of your App Service plan that should be provisioned.')
param appServicePlanCapacity int = 1
@description('The name of the Front Door endpoint to create. This must be globally unique.')
param frontDoorEndpointName string = 'afd-${uniqueString(resourceGroup().id)}'
@description('The name of the SKU to use when creating the Front Door profile.')
@allowed([
'Standard_AzureFrontDoor'
'Premium_AzureFrontDoor'
])
param frontDoorSkuName string = 'Standard_AzureFrontDoor'
var appServicePlanName = 'AppServicePlan'
var frontDoorProfileName = 'MyFrontDoor'
var frontDoorOriginGroupName = 'MyOriginGroup'
var frontDoorOriginName = 'MyAppServiceOrigin'
var frontDoorRouteName = 'MyRoute'
resource frontDoorProfile 'Microsoft.Cdn/profiles@2021-06-01' = {
name: frontDoorProfileName
location: 'global'
sku: {
name: frontDoorSkuName
}
}
resource appServicePlan 'Microsoft.Web/serverFarms@2020-06-01' = {
name: appServicePlanName
location: location
sku: {
name: appServicePlanSkuName
capacity: appServicePlanCapacity
}
kind: 'app'
}
resource app 'Microsoft.Web/sites@2020-06-01' = {
name: appName
location: location
kind: 'app'
identity: {
type: 'SystemAssigned'
}
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
siteConfig: {
detailedErrorLoggingEnabled: true
httpLoggingEnabled: true
requestTracingEnabled: true
ftpsState: 'Disabled'
minTlsVersion: '1.2'
ipSecurityRestrictions: [
{
tag: 'ServiceTag'
ipAddress: 'AzureFrontDoor.Backend'
action: 'Allow'
priority: 100
headers: {
'x-azure-fdid': [
frontDoorProfile.properties.frontDoorId
]
}
name: 'Allow traffic from Front Door'
}
]
}
}
}
resource frontDoorEndpoint 'Microsoft.Cdn/profiles/afdEndpoints@2021-06-01' = {
name: frontDoorEndpointName
parent: frontDoorProfile
location: 'global'
properties: {
enabledState: 'Enabled'
}
}
resource frontDoorOriginGroup 'Microsoft.Cdn/profiles/originGroups@2021-06-01' = {
name: frontDoorOriginGroupName
parent: frontDoorProfile
properties: {
loadBalancingSettings: {
sampleSize: 4
successfulSamplesRequired: 3
}
healthProbeSettings: {
probePath: '/'
probeRequestType: 'HEAD'
probeProtocol: 'Http'
probeIntervalInSeconds: 100
}
}
}
resource frontDoorOrigin 'Microsoft.Cdn/profiles/originGroups/origins@2021-06-01' = {
name: frontDoorOriginName
parent: frontDoorOriginGroup
properties: {
hostName: app.properties.defaultHostName
httpPort: 80
httpsPort: 443
originHostHeader: app.properties.defaultHostName
priority: 1
weight: 1000
}
}
resource frontDoorRoute 'Microsoft.Cdn/profiles/afdEndpoints/routes@2021-06-01' = {
name: frontDoorRouteName
parent: frontDoorEndpoint
dependsOn: [
frontDoorOrigin // This explicit dependency is required to ensure that the origin group is not empty when the route is created.
]
properties: {
originGroup: {
id: frontDoorOriginGroup.id
}
supportedProtocols: [
'Http'
'Https'
]
patternsToMatch: [
'/*'
]
forwardingProtocol: 'HttpsOnly'
linkToDefaultDomain: 'Enabled'
httpsRedirect: 'Enabled'
}
}
output appServiceHostName string = app.properties.defaultHostName
output frontDoorEndpointHostName string = frontDoorEndpoint.properties.hostName
Il file Bicep definisce più risorse di Azure:
- Microsoft.Cdn/profiles - Profilo Frontdoor di Azure Standard/Premium
- Microsoft.Web/serverfarms - Piano di servizio app per ospitare app web
- Microsoft.Web/sites - Origine dell'app Web che gestisce le richieste per Frontdoor
Distribuire il file Bicep
Salvare il file Bicep come main.bicep nel computer locale.
Distribuisci il file Bicep usando l'interfaccia della riga di comando di Azure o Azure PowerShell.
az group create --name exampleRG --location eastus az deployment group create --resource-group exampleRG --template-file main.bicepAl termine della distribuzione, verrà visualizzato un output simile al seguente:
Convalidare la distribuzione
Usare l'interfaccia della riga di comando di Azure o Azure PowerShell per elencare le risorse distribuite nel gruppo di risorse.
az resource list --resource-group exampleRG
È anche possibile convalidare la distribuzione usando il portale di Azure.
Accedere al portale di Azure.
Selezionare Gruppi di risorse nel riquadro sinistro.
Selezionare il gruppo di risorse creato nella sezione precedente.
Selezionare il Frontdoor creato. Verrà visualizzato il nome host dell'endpoint. Copiare il nome host e incollarlo nella barra degli indirizzi di un browser. Premere INVIO e le richieste verranno indirizzate all'app Web.
Pulire le risorse
Quando non è più necessario, usare il portale di Azure, l'interfaccia della riga di comando di Azure o Azure PowerShell per eliminare il servizio Frontdoor e il gruppo di risorse. Frontdoor e tutte le risorse correlate vengono rimosse.
az group delete --name exampleRG
Passaggi successivi
In questo avvio rapido sono stati creati questi componenti:
- Porta d'ingresso
- Piano di servizio app
- App Web
Per informazioni su come aggiungere un dominio personalizzato a Front Door, proseguire con le esercitazioni su Front Door.