다음을 통해 공유


App Service의 DNS(이름 확인)

앱에서 종속 리소스를 호출할 때 DNS를 사용합니다. 리소스는 Key Vault, Storage 또는 Azure SQL과 같은 Azure 서비스일 수 있지만 앱에서 사용하는 웹 API일 수도 있습니다. 예를 들어 myservice.com을 호출하려는 경우 DNS를 사용하여 IP에 대한 이름을 확인합니다. 이 문서에서는 App Service에서 이름 확인을 처리하고 사용할 DNS 서버를 결정하는 방법을 설명합니다. 또한 이 문서에서는 DNS 확인을 구성하는 데 사용할 수 있는 설정도 설명합니다.

App Service에서 이름 확인 작동 방식

앱을 가상 네트워크와 통합하지 않고 사용자 지정 DNS 서버가 구성되지 않은 경우 앱은 Azure DNS를 사용합니다. 앱을 가상 네트워크와 통합하면 앱은 가상 네트워크의 DNS 구성을 사용합니다. 가상 네트워크 기본값은 Azure DNS를 사용하는 것입니다. 가상 네트워크를 통해 Azure DNS 프라이빗 영역에 연결하고 프라이빗 엔드포인트 확인이나 프라이빗 도메인 이름 확인에 사용할 수도 있습니다.

사용자 지정 DNS 서버 목록을 사용하여 가상 네트워크를 구성한 경우 App Service의 이름 확인에는 최대 5개의 사용자 지정 DNS 서버가 사용됩니다. 가상 네트워크에서 사용자 지정 DNS 서버를 사용하고 개발자가 프라이빗 엔드포인트를 사용하는 경우 이 문서를 주의 깊게 읽어야 합니다. 또한 사용자 지정 DNS 서버가 앱에서 사용하는 모든 공용 DNS 레코드를 확인할 수 있다는 점도 고려해야 합니다. DNS 구성에서 요청을 공용 DNS 서버에 전달하거나 사용자 지정 DNS 서버 목록에 Azure DNS와 같은 공용 DNS 서버를 포함하거나 앱 수준에서 대체 서버를 지정해야 합니다.

앱이 DNS를 사용하여 도메인 이름을 확인해야 하는 경우 앱은 이름 확인 요청을 구성된 모든 DNS 서버에 보냅니다. 목록의 첫 번째 서버에서 제한 시간 내에 응답을 반환하면 결과가 즉시 반환됩니다. 그렇지 않은 경우 앱은 제한 시간 내에 다른 서버가 응답할 때까지 대기하고 서버를 구성한 순서대로 DNS 서버 응답을 평가합니다. 제한 시간 내에 응답하는 서버가 없으며 재시도를 구성했으면 프로세스를 반복합니다.

DNS 서버 구성

개별 앱을 사용하면 dnsConfiguration 사이트 속성 개체에서 dnsServers 속성을 지정하여 DNS 구성을 재정의할 수 있습니다. 사용자 지정 DNS 서버를 최대 5개까지 지정할 수 있습니다. Azure CLI를 사용하여 사용자 지정 DNS 서버를 구성할 수 있습니다.

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

DNS 앱 설정

App Service에는 DNS 서버와 이름 확인 동작을 구성하는 기존 앱 설정이 있습니다. 사이트 속성은 둘 다 있는 경우 앱 설정을 재정의합니다. 사이트 속성은 Azure Policy를 사용하여 감사할 수 있고 구성 시 유효성을 검사할 수 있다는 장점이 있습니다. 사이트 속성을 사용하는 것이 좋습니다.

기존 WEBSITE_DNS_SERVER 앱 설정을 계속 사용할 수 있으며 두 설정 중 하나를 사용하여 사용자 지정 DNS 서버를 추가할 수 있습니다. 앱 설정을 사용하여 DNS 서버를 여러 개 추가하려면 공백 없이 쉼표로 서버를 구분해야 합니다.

앱 설정 WEBSITE_DNS_ALT_SERVER를 사용하여 특정 DNS 서버를 구성된 DNS 서버 목록에 추가합니다. 대체 DNS 서버는 명시적으로 구성된 DNS 서버와 가상 네트워크에서 상속된 DNS 서버 모두에 추가됩니다.

앱 설정은 이름 확인 동작을 구성하기 위해 존재하며 WEBSITE_DNS_MAX_CACHE_TIMEOUT, WEBSITE_DNS_TIMEOUTWEBSITE_DNS_ATTEMPTS 이름이 지정됩니다.

이름 확인 동작 구성

이름 확인을 세밀하게 제어해야 하는 경우 App Service를 통해 기본 동작을 수정할 수 있습니다. 다시 시도, 다시 시도 제한 시간 및 캐시 제한 시간을 수정할 수 있습니다. 캐시 기간을 사용하지 않도록 설정하거나 줄이는 것과 같은 동작을 변경하면 성능이 영향을 받을 수 있습니다.

Property name Windows 기본값 Linux 기본값 허용된 값 설명
dnsRetryAttemptCount 1 5 1-5 다시 시도하지 않는 확인 시도 횟수를 정의합니다.
dnsMaxCacheTimeout 30 0 0~60 DNS 결과는 개별 레코드 TTL에 따라 캐시되지만 정의된 최대 캐시 제한 시간 이상으로 캐시되지 않습니다. 캐시를 0으로 설정하면 캐싱이 사용되지 않습니다.
dnsRetryAttemptTimeout 3 1 1-30 다시 시도하거나 실패하기 전의 제한 시간입니다. 제한 시간은 주 서버가 응답하지 않는 경우 보조 서버 결과를 기다리는 시간도 정의합니다.

참고 항목

  • Windows 컨테이너 앱에서는 이름 확인 동작을 변경할 수 없습니다.
  • dnsMaxCacheTimeout을 구성하려면 앱 설정 WEBSITE_ENABLE_DNS_CACHE="true"를 추가하여 캐싱을 사용하도록 설정해야 합니다. 캐싱을 사용하도록 설정하지만 dnsMaxCacheTimeout을 구성하지 않으면 제한 시간은 30으로 설정됩니다.

다음 CLI 명령을 사용하여 이름 확인 동작을 구성합니다.

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"

다음 CLI 명령을 사용하여 설정 유효성을 검사합니다.

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

다음 단계