共用方式為


App Service 中的名稱解析 (DNS)

應用程式會在呼叫相依資源時使用 DNS。 資源可以是 Azure 服務,例如 Key Vault、儲存體或 Azure SQL,但也可以是應用程式相依的 Web API。 當您想要發出呼叫時,例如 myservice.com,您會使用 DNS 將名稱解析為 IP。 本文說明 App Service 如何處理名稱解析,以及如何決定要使用的 DNS 伺服器。 本文也說明可以用來設定 DNS 解析的設定。

名稱解析在 App Service 中的運作方式

如果您未整合應用程式與虛擬網路,且未設定自訂 DNS 伺服器,則應用程式會使用 Azure DNS。 如果整合應用程式與虛擬網路,則應用程式會使用虛擬網路的 DNS 設定。 虛擬網路的預設值也是使用 Azure DNS。 透過虛擬網路,也可以連結至 Azure DNS 私人區域,並將它用於私人端點解析或私人網域名稱解析。

如果您使用自訂 DNS 伺服器清單來設定虛擬網路,則 App Service 中的名稱解析最多會使用五部自訂 DNS 伺服器。 如果您的虛擬網路使用自訂 DNS 伺服器,且您使用的是私人端點,則應仔細閱讀本文。 您還必須考慮您的自訂 DNS 伺服器是否可以解析應用程式所使用的任何公用 DNS 記錄。 您的 DNS 設定必須將要求轉送至公用 DNS 伺服器,包括在自訂 DNS 伺服器清單中的公用 DNS 伺服器 (例如 Azure DNS) 或指定應用程式層級的替代伺服器。

當應用程式需要使用 DNS 解析網域名稱時,應用程式會將名稱解析要求傳送給所有已設定的 DNS 伺服器。 如果清單中的第一部伺服器在逾時限制內傳回回應,您會立即取得傳回的結果。 如果沒有,則應用程式會在逾時期限內等候其他伺服器回應,並依照您設定伺服器的順序評估 DNS 伺服器回應。 如果在逾時期限內沒有任何伺服器回應,且您已設定重試,則會重複此程序。

設定 DNS 伺服器

個別應用程式可讓您在 dnsConfiguration 網站屬性物件中指定 dnsServers 屬性,藉此覆寫 DNS 設定。 您最多可以指定五部自訂 DNS 伺服器。 您可以使用 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 原則進行稽核,並在設定時進行驗證。 建議您使用網站屬性。

您仍然可以使用現有的 WEBSITE_DNS_SERVER 應用程式設定,而且可以使用任一設定來新增自訂 DNS 伺服器。 如果您想使用應用程式設定來新增多個 DNS 伺服器,則必須以逗號分隔伺服器且不加入任何空格。

使用應用程式設定 WEBSITE_DNS_ALT_SERVER,您會將特定 DNS 伺服器附加至設定的 DNS 伺服器清單。 替代 DNS 伺服器會附加至明確設定的 DNS 伺服器和繼承自虛擬網路的 DNS 伺服器。

也有可以設定名稱解析行為的應用程式設定,名稱為 WEBSITE_DNS_MAX_CACHE_TIMEOUTWEBSITE_DNS_TIMEOUTWEBSITE_DNS_ATTEMPTS

設定名稱解析行為

如果您需要更精細地控制名稱解析,App Service 可讓您修改預設行為。 您可以修改重試嘗試次數、重試逾時和快取逾時。 變更停用或降低快取持續時間等行為可能會影響效能。

屬性名稱 Windows 預設值 Linux 預設值 允許的值 描述
dnsRetryAttemptCount 1 5 1-5 定義嘗試解析的次數,其中值 1 表示不重試。
dnsMaxCacheTimeout 30 0 0-60 DNS 結果會根據個別記錄 TTL 進行快取,但時間不再超過已定義的快取逾時上限。 將快取設定為零表示快取已停用。
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"

下一步