對應自訂網域

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

    請注意下列限制:

    • 建議您使用入口控管機制,讓應用程式只接收來自負載平衡器 (以及您使用的 VPC,如果有) 的要求。否則,使用者可以使用應用程式的 App Engine 網址,略過負載平衡器、Google Cloud Armor 安全政策、SSL 憑證和透過負載平衡器傳遞的私密金鑰。

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

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

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

    如果您不需要修改預設的 Google Accounts API 參照來源,請繼續進行下一個步驟。

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

  2. 在 Google Cloud 控制台中,前往 App Engine「Settings」頁面的「Custom Domains」分頁。

    前往「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「Settings」頁面的「Custom Domains」分頁。這個頁面會列出您已對應至應用程式的所有網域 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」(自訂網域) 頁面

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

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

疑難排解

如果應用程式在使用 G Suite 網域驗證功能設定自訂網域後出現驗證錯誤,請移除自訂網域對應,然後重做「將自訂網域對應至應用程式」步驟。請務必在,在 App Engine 中設定自訂網域對應。

後續步驟

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