對應自訂網域

您可以為應用程式使用自訂網域,而非 App Engine 提供的預設位址。

如要使用自訂網域,請將網域對應至應用程式,然後更新 DNS 記錄。您可以對應裸名網域 (例如 example.com) 或子網域 (例如 subdomain.example.com)。您也可以使用萬用字元對應子網域。

根據預設,當您將網域對應至應用程式時,App Engine 會核發用於 HTTPS 連線的安全資料傳輸層 (SSL) 代管憑證。如要進一步瞭解如何在自訂網域使用安全資料傳輸層 (SSL),包括如何使用自己的 SSL 憑證,請參閱使用安全資料傳輸層 (SSL) 保護自訂網域一文。

在某些地區,如果使用自訂網域,App Engine 傳送給應用程式使用者的回應可能會明顯延遲。這些地區如下:

  • us-west2
  • us-east4
  • northamerica-northeast1
  • southamerica-east1
  • europe-west2
  • europe-west3
  • asia-south1
  • asia-northeast1
  • australia-southeast1

App Engine 自訂網域會為所有應用程式使用共用 IP 位址集區。如要使用僅對應至網域的 IP 位址,請透過 App Engine 設定負載平衡器。這項措施可減輕網域前端問題,也就是 SNI 憑證中對應用程式 A 的要求,可能會在 HTTP 主機標頭中路由至應用程式 B。

事前準備

  • 如果您沒有網域,請購買一個。您可以使用任何網域名稱註冊商,但如果使用 Google Domains,系統會自動為 App Engine 驗證網域,您不必經歷網域驗證程序。

  • 如要新增或編輯自訂網域對應,您的帳戶必須具備 App Engine 管理員角色 (roles/appengine.appAdmin),或是包含 appengine.applications.get 權限的自訂角色。

  • 如果您使用 Cloud Load Balancing 和無伺服器 NEG 將流量轉送至 App Engine 應用程式,建議您將自訂網域對應至負載平衡器,而非直接對應至應用程式,並使用為負載平衡器建立的 SSL 憑證。這樣一來,您就不必為每個無伺服器應用程式管理個別的 SSL 憑證。此外,您還能透過 Cloud Load Balancing 設定 SSL 政策,控管負載平衡器與用戶端交涉的 SSL 功能。如需詳細資訊,請參閱以下頁面:

    請注意下列限制:

    • 建議您使用 Ingress 控制項,確保應用程式只會接收負載平衡器 (以及您使用的 VPC) 傳送的要求。否則,使用者可以透過應用程式的 App Engine 網址略過負載平衡器、Cloud Armor 安全性政策、SSL 憑證,以及透過負載平衡器傳遞的私密金鑰。

將自訂網域對應至應用程式

  1. 在 Google Cloud 控制台中,前往 App Engine「設定」頁面的「應用程式設定」分頁。

    前往「Application settings」(應用程式設定) 頁面

    如不需修改預設的 Google Accounts API 參照網址,請繼續下一個步驟。

    如要為自訂網域啟用 Google Workspace 驗證,請按一下「編輯」修改「Google 帳戶 API」參照位址。在「Google Authentication」下拉式選單中,選取「Google Workspace domain」,然後在空白欄位中新增網域,例如 example.com

  2. 在 Google Cloud 控制台中,前往 App Engine「設定」頁面的「自訂網域」分頁。

    前往「Custom Domains」(自訂網域) 頁面

  3. 按一下 [新增自訂網域]

  4. 如果你的網域已通過驗證,該網域將顯示在「選取要使用的網域」區段。從下拉式選單中選取所需網域,然後按一下「繼續」

    如果尚未驗證網域,請按照下列步驟操作:

    1. 從下拉式選單中選取「驗證新網域」
    2. 輸入裸網域名稱 (例如「example.com」),然後按一下「驗證」

      即使您只想對應子網域 (例如「www.subdomain.example.com」),也請輸入裸網域名稱來驗證擁有權。

      請注意,網域名稱長度不得超過 64 個位元組。

    3. 在隨即顯示的 Search Console 視窗中輸入相關資訊。 如需使用 Search Console 的相關說明,請參閱「Search Console 說明」。

    4. 完成 Search Console 中的步驟後,請返回 Google Cloud 控制台的「新增自訂網域」頁面。

  5. 在「將網域指向 [專案 ID]」區段中,指定要對應的網域和子網域。

    建議您對應裸名網域和 www 子網域。您可以視需要新增更多子網域。

    新增所有對應關係後,請按一下「儲存對應」

  6. 按一下「繼續」,即可查看網域的 DNS 記錄。

    您隨時可以在 App Engine「設定」頁面的「自訂網域」分頁中,擷取這些記錄。

  7. 登入網域註冊商網站,然後使用上一步顯示的記錄更新 DNS 記錄

在網域註冊商更新 DNS 記錄

將服務對應至 App Engine 中的自訂網域之後,接著必須更新您放在網域註冊商的 DNS 記錄。為方便作業,App Engine 會產生並顯示您需要輸入的 DNS 記錄。

  1. 擷取網域對應的 DNS 記錄資訊:

    在 Google Cloud 控制台中,前往 App Engine「設定」頁面的「自訂網域」分頁標籤。這個頁面會列出您對應至應用程式的所有網域 DNS 記錄。

  2. 在網域註冊商服務中登入您的帳戶,然後開啟 DNS 設定頁面。

  3. 前往網域的設定頁面並找出「主機記錄」部分,然後新增您將網域對應到應用程式時取得的每一筆 DNS 記錄。

    在記錄欄位中輸入下列資訊:

    • 記錄類型:輸入 Google 為您建立的 DNS 記錄中顯示的記錄類型 (AAAAACNAME)。
    • 記錄名稱:
      • AAAAA 記錄中,輸入 @
      • CNAME 記錄中,輸入第三層網域名稱。舉例來說,輸入 www 即可對應 www.example.com 子網域。
    • TTL:視需求指定 TTL。
    • 資料:輸入 Google 為您建立的 DNS 記錄中顯示的記錄資料 (rrdata)。
      • AAAAA 記錄中,記錄資料是 IP 位址
      • CNAME 記錄中,記錄資料是網域名稱
  4. 儲存您在網域帳戶 DNS 設定頁面上所做的變更。 通常這些變更只要幾分鐘就能生效,不過在某些情況下可能要耗費數小時,時間長短取決於註冊商,以及網域中任何之前 DNS 記錄的存留時間 (TTL)。你可以使用 dig 工具 (例如這個線上dig版本),確認 DNS 記錄已成功更新。

  5. 前往服務的新網址 (例如 https://www.example.com),測試是否成功。請注意,自動核發 SSL 憑證可能需要幾分鐘的時間。

將擁有權委派給其他 Google Cloud 使用者或服務帳戶

如果需要將網域擁有權委派給其他使用者或服務帳戶,可以透過「Search Console」頁面新增權限:

  1. 開啟 Search Console 驗證頁面

  2. 在「Properties」(屬性) 底下,按一下您要新增使用者或服務帳戶的網域。

  3. 在「已驗證擁有者」清單的結尾,按一下「新增擁有者」,然後輸入 Google 帳戶電子郵件地址或服務帳戶 ID。

    如要查看服務帳戶清單,請在 Google Cloud 控制台中開啟「Service Accounts」(服務帳戶) 頁面:

    前往「Service Accounts」(服務帳戶) 頁面

使用子網域

如果您為自訂網域設定萬用字元子網域對應,您的應用程式就會為任何相符的子網域處理要求。

  • 如果使用者瀏覽的網域與應用程式版本名稱或服務名稱相符,應用程式就會提供該版本。
  • 如果使用者瀏覽的網域與服務名稱相符,應用程式就會提供該服務。
  • 每個基礎網域每週的代管 SSL 憑證上限為 20 個。 如果您達到上限,App Engine 會繼續嘗試核發代管憑證,直到所有要求都處理完畢。

萬用字元對應

您可以從第三級的子網域開始,使用萬用字元對應任何等級的子網域。舉例來說,如果您的網域是 example.com,您在網址欄位中輸入文字:

  • 輸入 *.example.com 會將 example.com 的所有子網域對應至您的應用程式。
  • 輸入 *.private.example.com 會將 private.example.com 的所有子網域對應至您的應用程式。
  • 輸入 *.nichol.sharks.nhl.example.com 會將 nichol.sharks.nhl.example.com 的所有子網域對應至您的應用程式。
  • 輸入 *.excogitate.system.example.com 會將 excogitate.system.example.com 的所有子網域對應至您的應用程式。

您可以在 dispatch.yaml 檔案中使用萬用字元對應,搭配 App Engine 中的服務,將要求轉送至特定服務。

如果您搭配網域中的其他子網域 (例如 sitesmail) 使用 Google Workspace,這些對應關係會獲得較高的優先順序,因此系統會優先比對這些對應關係,然後才進行萬用字元對應作業。此外,如果您還有對應至其他子網域的 App Engine 應用程式,這些對應的優先順序也會高於任何萬用字元對應。

部分 DNS 供應商可能不支援萬用字元子網域對應。要特別注意的是,DNS 供應商必須允許在 CNAME 主機項目中使用萬用字元。

依照 App Engine 的服務轉送規則,萬用字元轉送規則適用於包含服務、版本和執行個體元件的網址。

從應用程式中刪除自訂網域

如要從應用程式中刪除自訂網域對應,您的帳戶必須具備 App Engine 管理員角色 (roles/appengine.appAdmin),或是包含 appengine.applications.update 權限的自訂角色。

在 Google Cloud 控制台中,執行下列操作:

  1. 前往 App Engine「設定」頁面的「Custom Domains」(自訂網域) 分頁。

    前往「Custom Domains」(自訂網域) 頁面

  2. 選取自訂網域名稱,然後按一下「刪除」

或者,您也可以使用 gcloud 指令Admin API 刪除自訂網域。

疑難排解

如果您使用 G Suite 網域驗證設定自訂網域後,應用程式顯示驗證錯誤,請移除自訂網域對應,然後重新執行「將自訂網域對應至應用程式」步驟。請務必設定 G Suite 網域驗證,再於 App Engine 中設定自訂網域對應。

後續步驟

使用安全資料傳輸層 (SSL) 保護自訂網域