對應自訂網域

App Engine 可讓應用程式透過 example.com 等自訂網域來提供服務,而非預設的 appspot.com 位址。您可以為 App Engine 應用程式建立網域對應關係,讓應用程式使用自訂網域。

根據預設,當您將自訂網域對應至應用程式時,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

事前準備

  1. 除非您已經有要使用的網域,否則請購買新網域。您可以向任何網域名稱註冊商購買網域,包括 Google Domains

  2. 如果您選擇使用 gcloud 工具指令:

    1. 安裝並初始化 Cloud SDK:

      下載並安裝

  3. 如果您選擇使用 Admin API,請查看存取 Admin API 一文中的必要條件資訊。

為應用程式新增自訂網域

如要為 App Engine 應用程式新增自訂網域:

  1. 透過「Webmaster Central」(網站管理員中心) 進行驗證,確認您是網域的擁有者:

    主控台
    1. 在 Google Cloud Platform 主控台中,依序前往 [App Engine] > [Settings] (設定) > [Custom Domains] (自訂網域)

      前往自訂網域頁面

    2. 按一下 [Add a custom domain] (新增自訂網域),畫面上會顯示「Add a new custom domain」(新增自訂網域) 表單:

      新增自訂網域

    3. 在「Select the domain you want to use」(選擇要使用的網域) 區段,輸入您要使用的網域名稱 (例如 example.com),然後按一下 [Continue] (繼續),即可在新分頁中開啟「Webmaster Central」(網站管理員中心) 頁面。
      1. 使用「Webmaster Central」(網站管理員中心) 驗證您的網域擁有權。

        重要事項:針對 App Engine,建議您使用 CNAME 記錄驗證網域擁有權。如果您選擇使用 TXT 記錄,就必須避免使用 CNAME 記錄來設定網域的 DNS,因為 CNAME 記錄會覆寫 TXT 記錄,導致您的網域顯示為未經驗證。

        如果您的網域驗證方法未提供 CNAME 記錄選項,您可以在網域供應商區段選取 [Other] (其他),然後選擇 [Add a CNAME record] (新增 CNAME 記錄):

        1. 依序點選 [Alternate methods] (替代方法) > [Domain name provider] (網域名稱供應商)
        2. 在選單中選取 [Other] (其他)
        3. 在「Having trouble」(遇到問題嗎?) 區段中,按一下 [Add a CNAME record] (新增 CNAME 記錄),然後按照畫面上的指示驗證網域擁有權。

          請注意:網域註冊商可能需要花一點時間才能完成 CNAME 設定程序。

      2. 返回 GCP 主控台的「Add new custom domain」(新增自訂網域) 表單。
    gcloud
    1. 執行下列 gcloud domains 指令,開啟「Webmaster Central」(網站管理員中心) 頁面:

      gcloud domains verify DOMAIN

      在上面的指令中,DOMAIN 是您要驗證擁有權的網域。

      範例:

      gcloud domains verify example.com
    2. 使用「Webmaster Central」(網站管理員中心) 驗證您網域的擁有權。

      重要事項:針對 App Engine,建議您使用 CNAME 記錄驗證網域擁有權。如果您選擇使用 TXT 記錄,就必須避免使用 CNAME 記錄來設定網域的 DNS,因為 CNAME 記錄會覆寫 TXT 記錄,導致您的網域顯示為未經驗證。

      如果您的網域驗證方法未提供 CNAME 記錄選項,您可以在網域供應商區段選取 [Other] (其他),然後選擇 [Add a CNAME record] (新增 CNAME 記錄):

      1. 依序點選 [Alternate methods] (替代方法) > [Domain name provider] (網域名稱供應商)
      2. 在選單中選取 [Other] (其他)
      3. 在「Having trouble」(遇到問題嗎?) 區段中,按一下 [Add a CNAME record] (新增 CNAME 記錄),然後按照畫面上的指示驗證網域擁有權。

        請注意:網域註冊商可能需要花一點時間才能完成 CNAME 設定程序。

      範例
      如要將下列 CNAME 記錄新增到您網域的 DNS 設定中:
      CNAME Label / Host: a1b2c3d4e5.example.com.
      CNAME Destination / Target: gv-abcdefghijk.dv.googlehosted.com
      您必須將 Label / HostDestination / Target 的值對應到網域 DNS 設定的對應欄位。舉例來說,在 Google Domains 中,您必須將 CNAME 設定為:
      名稱類型TTL資料
      a1b2c3d4e5CNAME1hgv-abcdefghijk.dv.googlehosted.com

      如要進一步瞭解如何新增 CNAME 記錄 (包括網域專用的操作說明),請參閱支援頁面

  2. 確認您的網域已通過驗證,否則您無法繼續進行後續步驟。請注意,系統只會顯示已驗證的網域

    主控台

    如果畫面上並未列出您的網域,請按一下 [Refresh domains] (重新整理網域)

    gcloud

    執行下列 gcloud domains 指令,列出您已驗證的網域:

    gcloud domains list-user-verified

  3. 如果您需要將網域擁有權委派給其他使用者或服務帳戶,可以透過「網站管理員中心」頁面新增權限:

    1. 在網路瀏覽器中開啟下列位址:

      https://www.google.com/webmasters/verification/home

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

    3. 向下捲動到「Verified owners」(已驗證擁有者) 清單,按一下 [Add an owner] (新增擁有者),然後輸入 Google 帳戶電子郵件地址或服務帳戶 ID。

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

      前往服務帳戶頁面

  4. 驗證網域的擁有權後,您可以將該網域對應到您的 App Engine 應用程式:

    主控台

    繼續進行「Add new custom domain」(新增自訂網域) 表單的下一步,選取您要對應到 App Engine 應用程式的網域:

    1. 指定您要對應的網域和子網域。表單已預先填入裸名網域和 www 子網域。
      • 裸名網域 (例如 example.com) 會對應到 http://example.com
      • 子網域 (例如 www) 會對應到 http://www.example.com
    2. 按一下 [Save mappings] (儲存對應) 建立所需對應關係。
    3. 在「Add new custom domain」(新增自訂網域) 表單的最後一個步驟中,請記下畫面上列出的資源記錄,包含其類型和正式名稱 (CNAME)。您稍後必須在網域的 DNS 設定中加入這些詳細資料。

      在下列範例中,CNAME 是其中一個列出的類型,ghs.googlehosted.com 則是其正式名稱。

      新增自訂網域
    gcloud

    執行下列 gcloud app domain-mappings 指令,將您的網域對應至 App Engine 應用程式:

    gcloud app domain-mappings create DOMAIN
    • 在上面的指令中,DOMAIN 是您要對應至 App Engine 應用程式的網域,例如 *.example.com
    • 如果發生錯誤,請嘗試在網域前後加上引號,例如 '*.example.com'

      範例:

      gcloud app domain-mappings create '*.example.com'
    • 請記下目前畫面中列出的資源記錄,包括其類型和正式名稱 (CNAME),您稍後必須將這些詳細資料新增到網域的 DNS 設定中。
    API

    如要透過程式將網域對應至 App Engine 應用程式,請參閱 Admin API 中的 app.domainMappings.create 方法。

    將網域對應至 App Engine 應用程式後,請使用 apps.domainMappings.list 方法列出您的資源記錄。

  5. 將您收到的資源記錄新增至網域註冊商的 DNS 設定中:

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

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

      一般來說,您會列出主機名稱以及使用位址格式的正式名稱。舉例來說,如果您註冊了 Google 網域,您新增到 DNS 設定的其中一筆記錄就是 www 主機名稱和 ghs.googlehosted.com 位址。如要指定裸名網域,請改為使用 @ghs.googlehosted.com 位址。

      如果您是從其他供應商遷移而來,請確保所有 DNS 記錄都指向您的 App Engine 應用程式。

      如要進一步瞭解如何對應網域,請參閱下方的使用子網域萬用字元對應部分。

    3. 儲存您在網域帳戶的 DNS 設定頁面中所做的變更。這些變更可能要一陣子才會生效。

  6. 透過應用程式的新網域網址 (例如 www.example.com) 前往您的應用程式,測試是否成功。

使用子網域

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

  • 如果使用者瀏覽的網域與應用程式版本名稱或服務名稱相符,應用程式就會提供該版本。
  • 如果使用者瀏覽的網域與服務名稱相符,應用程式就會提供該服務。
  • 每個基礎網域每週的代管 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) 使用 G Suite,這些對應關係的優先順序較高。系統會優先比對這些對應關係,然後再進行萬用字元的對應作業。此外,如果您還有對應至其他子網域的 App Engine 應用程式,這些對應的優先順序也會高於任何萬用字元對應。

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

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

後續步驟

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

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Python 適用的 App Engine 彈性環境文件