您可以為應用程式使用自訂網域,而非 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 憑證,以及透過負載平衡器傳遞的私密金鑰。
將自訂網域對應至應用程式
在 Google Cloud 控制台中,前往 App Engine「設定」頁面的「應用程式設定」分頁。
前往「Application settings」(應用程式設定) 頁面
如不需修改預設的 Google Accounts API 參照網址,請繼續下一個步驟。
如要為自訂網域啟用 Google Workspace 驗證,請按一下「編輯」修改「Google 帳戶 API」參照位址。在「Google Authentication」下拉式選單中,選取「Google Workspace domain」,然後在空白欄位中新增網域,例如
example.com
。在 Google Cloud 控制台中,前往 App Engine「設定」頁面的「自訂網域」分頁。
按一下 [新增自訂網域]。
如果你的網域已通過驗證,該網域將顯示在「選取要使用的網域」區段。從下拉式選單中選取所需網域,然後按一下「繼續」。
如果尚未驗證網域,請按照下列步驟操作:
- 從下拉式選單中選取「驗證新網域」。
輸入裸網域名稱 (例如「example.com」),然後按一下「驗證」。
即使您只想對應子網域 (例如「www.subdomain.example.com」),也請輸入裸網域名稱來驗證擁有權。
請注意,網域名稱長度不得超過 64 個位元組。
在隨即顯示的 Search Console 視窗中輸入相關資訊。 如需使用 Search Console 的相關說明,請參閱「Search Console 說明」。
完成 Search Console 中的步驟後,請返回 Google Cloud 控制台的「新增自訂網域」頁面。
在「將網域指向 [專案 ID]」區段中,指定要對應的網域和子網域。
建議您對應裸名網域和
www
子網域。您可以視需要新增更多子網域。新增所有對應關係後,請按一下「儲存對應」。
按一下「繼續」,即可查看網域的 DNS 記錄。
您隨時可以在 App Engine「設定」頁面的「自訂網域」分頁中,擷取這些記錄。
登入網域註冊商網站,然後使用上一步顯示的記錄更新 DNS 記錄。
在網域註冊商更新 DNS 記錄
將服務對應至 App Engine 中的自訂網域之後,接著必須更新您放在網域註冊商的 DNS 記錄。為方便作業,App Engine 會產生並顯示您需要輸入的 DNS 記錄。
擷取網域對應的 DNS 記錄資訊:
在 Google Cloud 控制台中,前往 App Engine「設定」頁面的「自訂網域」分頁標籤。這個頁面會列出您對應至應用程式的所有網域 DNS 記錄。
在網域註冊商服務中登入您的帳戶,然後開啟 DNS 設定頁面。
前往網域的設定頁面並找出「主機記錄」部分,然後新增您將網域對應到應用程式時取得的每一筆 DNS 記錄。
在記錄欄位中輸入下列資訊:
- 記錄類型:輸入 Google 為您建立的 DNS 記錄中顯示的記錄類型 (
A
、AAAA
或CNAME
)。 - 記錄名稱:
- 在
A
或AAAA
記錄中,輸入@
- 在
CNAME
記錄中,輸入第三層網域名稱。舉例來說,輸入www
即可對應www.example.com
子網域。
- 在
- TTL:視需求指定 TTL。
- 資料:輸入 Google 為您建立的 DNS 記錄中顯示的記錄資料 (rrdata)。
- 在
A
或AAAA
記錄中,記錄資料是 IP 位址 - 在
CNAME
記錄中,記錄資料是網域名稱
- 在
- 記錄類型:輸入 Google 為您建立的 DNS 記錄中顯示的記錄類型 (
儲存您在網域帳戶 DNS 設定頁面上所做的變更。 通常這些變更只要幾分鐘就能生效,不過在某些情況下可能要耗費數小時,時間長短取決於註冊商,以及網域中任何之前 DNS 記錄的存留時間 (TTL)。你可以使用
dig
工具 (例如這個線上dig
版本),確認 DNS 記錄已成功更新。前往服務的新網址 (例如
https://www.example.com
),測試是否成功。請注意,自動核發 SSL 憑證可能需要幾分鐘的時間。
將擁有權委派給其他 Google Cloud 使用者或服務帳戶
如果需要將網域擁有權委派給其他使用者或服務帳戶,可以透過「Search Console」頁面新增權限:
在「Properties」(屬性) 底下,按一下您要新增使用者或服務帳戶的網域。
在「已驗證擁有者」清單的結尾,按一下「新增擁有者」,然後輸入 Google 帳戶電子郵件地址或服務帳戶 ID。
如要查看服務帳戶清單,請在 Google Cloud 控制台中開啟「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 中的服務,將要求轉送至特定服務。
如果您搭配網域中的其他子網域 (例如 sites
和 mail
) 使用 Google Workspace,這些對應關係會獲得較高的優先順序,因此系統會優先比對這些對應關係,然後才進行萬用字元對應作業。此外,如果您還有對應至其他子網域的 App Engine 應用程式,這些對應的優先順序也會高於任何萬用字元對應。
部分 DNS 供應商可能不支援萬用字元子網域對應。要特別注意的是,DNS 供應商必須允許在 CNAME
主機項目中使用萬用字元。
依照 App Engine 的服務轉送規則,萬用字元轉送規則適用於包含服務、版本和執行個體元件的網址。
從應用程式中刪除自訂網域
如要從應用程式中刪除自訂網域對應,您的帳戶必須具備 App Engine 管理員角色 (roles/appengine.appAdmin
),或是包含 appengine.applications.update
權限的自訂角色。
在 Google Cloud 控制台中,執行下列操作:
前往 App Engine「設定」頁面的「Custom Domains」(自訂網域) 分頁。
選取自訂網域名稱,然後按一下「刪除」。
或者,您也可以使用 gcloud 指令或 Admin API 刪除自訂網域。
疑難排解
如果您使用 G Suite 網域驗證設定自訂網域後,應用程式顯示驗證錯誤,請移除自訂網域對應,然後重新執行「將自訂網域對應至應用程式」步驟。請務必先設定 G Suite 網域驗證,再於 App Engine 中設定自訂網域對應。