Dela via


Namnmatchning (DNS) i App Service

Din app använder DNS när du anropar beroende resurser. Resurser kan vara Azure-tjänster som Key Vault, Storage eller Azure SQL, men det kan också vara webb-API:er som appen är beroende av. När du vill göra ett anrop till till exempel myservice.com använder du DNS för att matcha namnet till en IP-adress. Den här artikeln beskriver hur App Service hanterar namnmatchning och hur den avgör vilka DNS-servrar som ska användas. I artikeln beskrivs även inställningar som du kan använda för att konfigurera DNS-matchning.

Så här fungerar namnmatchning i App Service

Om du inte integrerar din app med ett virtuellt nätverk och anpassade DNS-servrar inte har konfigurerats använder din app Azure DNS. Om du integrerar din app med ett virtuellt nätverk använder appen DNS-konfigurationen för det virtuella nätverket. Standardvärdet för virtuellt nätverk är också att använda Azure DNS. Via det virtuella nätverket är det också möjligt att länka till privata Azure DNS-zoner och använda dem för lösning av privata slutpunkter eller matchning av privata domännamn.

Om du har konfigurerat ditt virtuella nätverk med en lista över anpassade DNS-servrar kommer namnmatchningen i App Service att använda upp till fem anpassade DNS-servrar. Om ditt virtuella nätverk använder anpassade DNS-servrar och du använder privata slutpunkter bör du läsa den här artikeln noggrant. Du måste också tänka på att dina anpassade DNS-servrar kan matcha alla offentliga DNS-poster som används av din app. DNS-konfigurationen måste antingen vidarebefordra begäranden till en offentlig DNS-server, inkludera en offentlig DNS-server som Azure DNS i listan över anpassade DNS-servrar eller ange en alternativ server på appnivå.

När din app behöver matcha ett domännamn med HJÄLP av DNS skickar appen en begäran om namnmatchning till alla konfigurerade DNS-servrar. Om den första servern i listan returnerar ett svar inom tidsgränsen returneras resultatet omedelbart. Annars väntar appen på att de andra servrarna ska svara inom tidsgränsen och utvärderar DNS-serversvaren i den ordning du konfigurerade servrarna. Om ingen av servrarna svarar inom tidsgränsen och du har konfigurerat ett nytt försök upprepar du processen.

Konfigurera DNS-servrar

Med den enskilda appen kan du åsidosätta DNS-konfigurationen genom att dnsServers ange egenskapen i platsegenskapsobjektet dnsConfiguration . Du kan ange upp till fem anpassade DNS-servrar. Du kan konfigurera anpassade DNS-servrar med hjälp av Azure CLI:

az resource update --resource-group <group-name> --name <app-name> --resource-type "Microsoft.Web/sites" --set properties.dnsConfiguration.dnsServers="['168.63.129.16','xxx.xxx.xxx.xxx']"

Inställningar för DNS-appar

App Service har befintliga appinställningar för att konfigurera DNS-servrar och namnmatchningsbeteende. Webbplatsegenskaper åsidosätter appinställningarna om båda finns. Webbplatsegenskaper har fördelen att de kan granskas med Azure Policy och verifieras vid tidpunkten för konfigurationen. Vi rekommenderar att du använder webbplatsegenskaper.

Du kan fortfarande använda den befintliga WEBSITE_DNS_SERVER appinställningen och du kan lägga till anpassade DNS-servrar med någon av inställningarna. Om du vill lägga till flera DNS-servrar med appinställningen måste du avgränsa servrarna med kommatecken utan att några tomma blanksteg har lagts till.

Med appinställningen WEBSITE_DNS_ALT_SERVERlägger du till den specifika DNS-servern i listan över konfigurerade DNS-servrar. Den alternativa DNS-servern läggs till både explicit konfigurerade DNS-servrar och DNS-servrar som ärvs från det virtuella nätverket.

Appinställningar finns också för att konfigurera namnmatchningsbeteende och heter WEBSITE_DNS_MAX_CACHE_TIMEOUT, WEBSITE_DNS_TIMEOUT och WEBSITE_DNS_ATTEMPTS.

Konfigurera beteende för namnmatchning

Om du behöver detaljerad kontroll över namnmatchningen kan du ändra standardbeteendet i App Service. Du kan ändra återförsök, försöka timeout igen och cachetimeout. Att ändra beteende som att inaktivera eller sänka cachevaraktigheten kan påverka prestandan.

Egenskapsnamn Standardvärde för Windows Standardvärde för Linux Tillåtna värden beskrivning
dnsRetryAttemptCount 1 5 1-5 Definierar antalet försök att matcha där ett innebär att inga återförsök görs.
dnsMaxCacheTimeout 30 0 0-60 DNS-resultat cachelagras enligt de enskilda posterna TTL, men inte längre än den definierade maximala tidsgränsen för cacheminnet. Om cacheminnet anges till noll är cachelagring inaktiverad.
dnsRetryAttemptTimeout 3 1 1-30 Tidsgräns innan du försöker igen eller misslyckas. Timeout definierar också tiden för att vänta på sekundära serverresultat om den primära inte svarar.

Kommentar

  • Det går inte att ändra namnmatchningsbeteendet i Windows Container-appar.
  • För att konfigurera dnsMaxCacheTimeoutmåste du se till att cachelagring är aktiverat genom att lägga till appinställningen WEBSITE_ENABLE_DNS_CACHE="true". Om du aktiverar cachelagring men inte konfigurerar dnsMaxCacheTimeoutanges tidsgränsen till 30.

Konfigurera beteendet för namnmatchning med hjälp av följande CLI-kommandon:

az resource update --resource-group <group-name> --name <app-name> --set properties.dnsConfiguration.dnsMaxCacheTimeout=[0-60] --resource-type "Microsoft.Web/sites"
az resource update --resource-group <group-name> --name <app-name> --set properties.dnsConfiguration.dnsRetryAttemptCount=[1-5] --resource-type "Microsoft.Web/sites"
az resource update --resource-group <group-name> --name <app-name> --set properties.dnsConfiguration.dnsRetryAttemptTimeout=[1-30] --resource-type "Microsoft.Web/sites"

Verifiera inställningarna med hjälp av det här CLI-kommandot:

az resource show --resource-group <group-name> --name <app-name> --query properties.dnsConfiguration --resource-type "Microsoft.Web/sites"

Nästa steg