Azure 容器應用程式中的自訂網域名稱和免費受控憑證
Azure 容器應用程式可讓您將一或多個自訂網域繫結至容器應用程式。 您可以為自訂網域自動設定免費的受控憑證。
如果您想要使用自己的憑證來設定自訂網域,請參閱在 Azure 容器應用程式中的自訂網域名稱和憑證。
注意
如果您設定自訂環境 DNS 尾碼,則無法將包含此尾碼的自訂網域新增至您的容器應用程式。
免費憑證需求
Azure 容器應用程式為您的自訂網域提供免費的受控憑證。 只要您的應用程式持續符合受控憑證的需求,您不需要採取任何動作,此 TLS/SSL 伺服器憑證就會自動更新。
這些需求包括:
啟用 HTTP 輸入,並確保您的容器應用程式可公開存取。
針對指向容器應用程式環境 IP 位址的 Apex 網域,您必須具備 A 記錄。
針對子網域,您必須有直接與容器應用程式自動產生的網域名稱對應的 CNAME 記錄。 對應至中繼 CNAME 值會導致無法發行和更新憑證。 CNAME 值的範例包括流量管理員、Cloudflare 和類似的服務。
注意
為了確保憑證發行和後續的更新順利進行,指派受控憑證時,必須隨時符合所有需求。
新增自訂網域和受控憑證
瀏覽至您 Azure 入口網站中的容器應用程式
選取 [設定] 區段中的 [輸入],確認您的應用程式已啟用 HTTP 輸入。 如果未啟用輸入,請使用下列步驟加以啟用:
- 將 [HTTP 輸入] 設定為 [已啟用]。
- 選取所需的輸入流量設定。
- 輸入目標連接埠。
- 選取 [儲存]。
在 [設定] 區段之下,選取 [自訂網域]。
選取 [新增自訂網域]。
在 [新增自訂網域和憑證] 視窗的 [TLS/SSL 憑證] 中,選取 [受控憑證]。
在 [網域] 中,輸入您要新增的網域。
根據您的網域類型,選取 [主機名稱記錄類型]。
網域類型 記錄類型 備註 Apex 網域 記錄 Apex 網域是網域根層級的網域。 例如,如果您的 DNS 區域為 contoso.com
,則contoso.com
為 Apex 網域。子網域 CNAME 子網域是屬於另一個網域的網域。 例如,如果您的 DNS 區域為 contoso.com
,則www.contoso.com
是可在區域中設定的子網域範例。使用裝載網域的 DNS 提供者,根據您使用 [網域驗證] 區段中顯示的值所選擇的 [主機名稱記錄類型] 建立 DNS 記錄。 記錄會將網域指向您的容器應用程式,並驗證您是否為擁有者。
如果您選取 [A 記錄],請建立下列 DNS 記錄:
記錄類型 Host 值 A @
容器應用程式環境的 IP 位址 TXT asuid
網域驗證碼 如果您選取 CNAME,請建立下列 DNS 記錄:
記錄類型 Host 值 CNAME 子網域 (例如, www
)容器應用程式的自動產生 <appname>.<region>.azurecontainerapps.io
網域TXT asuid.
後面接著子網域 (例如,asuid.www
)網域驗證碼
選取驗證。
驗證成功時,請選取 [新增]。
可能需要幾分鐘的時間才能發出憑證,並將網域新增至您的容器應用程式。
作業完成之後,您會在自訂網域清單中看到您的網域名稱,其狀態為 [安全]。 瀏覽至您的網域,以驗證它是否可以存取。
容器應用程式支援 Apex 網域和子網域。 每個網域類型都需要不同的 DNS 記錄類型和驗證方法。
網域類型 | 記錄類型 | 驗證方法 | 備註 |
---|---|---|---|
Apex 網域 | 記錄 | HTTP | Apex 網域是網域根層級的網域。 例如,如果您的 DNS 區域為 contoso.com ,則 contoso.com 為 Apex 網域。 |
子網域 | CNAME | CNAME | 子網域是屬於另一個網域的網域。 例如,如果您的 DNS 區域為 contoso.com ,則 www.contoso.com 是可在區域中設定的子網域範例。 |
使用 Azure CLI 登入 Azure。
az login
接下來,安裝 CLI 的 Azure 容器應用程式擴充功能。
az extension add --name containerapp --upgrade
確認您的容器應用程式已啟用 HTTP 輸入。
az containerapp ingress show -n <CONTAINER_APP_NAME> -g <RESOURCE_GROUP_NAME>
如果未啟用輸入,請使用下列步驟加以啟用:
az containerapp ingress enable -n <CONTAINER_APP_NAME> -g <RESOURCE_GROUP_NAME> \ --type external --target-port <TARGET_PORT> --transport auto
以容器應用程式的名稱取代
<CONTAINER_APP_NAME>
,<RESOURCE_GROUP_NAME>
取代為包含容器應用程式的資源群組名稱,並以容器應用程式正在接聽的連接埠取代<TARGET_PORT>
。如果您要設定 Apex 網域,請取得容器應用程式環境的 IP 位址。
az containerapp env show -n <ENVIRONMENT_NAME> -g <RESOURCE_GROUP_NAME> -o tsv --query "properties.staticIp"
以您的環境名稱取代
<ENVIRONMENT_NAME>
,並以包含您環境的資源群組名稱取代<RESOURCE_GROUP_NAME>
。如果您要設定子網域,請取得容器應用程式的自動產生網域。
az containerapp show -n <CONTAINER_APP_NAME> -g <RESOURCE_GROUP_NAME> -o tsv --query "properties.configuration.ingress.fqdn"
將
<CONTAINER_APP_NAME>
取代為容器應用程式的名稱,並將<RESOURCE_GROUP_NAME>
取代為包含容器應用程式的資源群組名稱。取得網域驗證碼。
az containerapp show -n <CONTAINER_APP_NAME> -g <RESOURCE_GROUP_NAME> -o tsv --query "properties.customDomainVerificationId"
將
<CONTAINER_APP_NAME>
取代為容器應用程式的名稱,並將<RESOURCE_GROUP_NAME>
取代為包含容器應用程式的資源群組名稱。使用裝載網域的 DNS 提供者,根據您使用 [網域驗證] 區段中顯示的值所選擇的記錄類型建立 DNS 記錄。 記錄會將網域指向您的容器應用程式,並驗證您是否擁有它。
如果您要設定 Apex 網域,請建立下列 DNS 記錄:
記錄類型 Host 值 A @
容器應用程式環境的 IP 位址 TXT asuid
網域驗證碼 如果您要設定子網域,請建立下列 DNS 記錄:
記錄類型 Host 值 CNAME 子網域 (例如, www
)容器應用程式的自動產生網域 TXT asuid.
後面接著子網域 (例如,asuid.www
)網域驗證碼
將網域新增至容器應用程式。
az containerapp hostname add --hostname <DOMAIN_NAME> -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME>
以您想要新增的網域名稱取代
<DOMAIN_NAME>
,<RESOURCE_GROUP_NAME>
取代為包含容器應用程式的資源群組名稱,並以容器應用程式的名稱取代<CONTAINER_APP_NAME>
。設定受控憑證,並將網域繫結至您的容器應用程式。
az containerapp hostname bind --hostname <DOMAIN_NAME> -g <RESOURCE_GROUP_NAME> -n <CONTAINER_APP_NAME> --environment <ENVIRONMENT_NAME> --validation-method <VALIDATION_METHOD>
以您想要新增的網域名稱取代
<DOMAIN_NAME>
,<RESOURCE_GROUP_NAME>
取代為包含容器應用程式的資源群組名稱、<CONTAINER_APP_NAME>
取代為容器應用程式的名稱,並以您的環境名稱取代<ENVIRONMENT_NAME>
。- 如果您要設定 A 記錄,請將
<VALIDATION_METHOD>
取代為HTTP
。 - 如果您要設定 CNAME,請將
<VALIDATION_METHOD>
取代為CNAME
。
可能需要幾分鐘的時間才能發出憑證,並將網域新增至您的容器應用程式。
- 如果您要設定 A 記錄,請將
作業完成後,請瀏覽至您的網域以驗證它是否可以存取。