對應自訂網域

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

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

本頁面說明如何針對 App Engine 上執行的應用程式建立網域對應關係。

如果您在下列地區使用自訂網域,回應的延遲時間可能會明顯增加:northamerica-northeast1 (蒙特婁)、southamerica-east1 (聖保羅)、asia-south1 (孟買) 和 australia-southeast1 (雪梨)。

事前準備

  1. 如果您沒有要使用的網域,請購買新網域。您可以向任何網域名稱註冊商購買網域,包括 Google Domains

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

    1. 安裝並初始化 Cloud SDK:

      下載並安裝

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

為應用程式新增自訂網域

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

  1. 透過網站管理員中心驗證您確實是網域的擁有者:

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

      前往「自訂網域」頁面

    2. 按一下 [新增自訂網域],畫面上會顯示「新增自訂網域」表單:

      新增自訂網域

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

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

        如果您的網域不支援使用 CNAME 記錄進行驗證,您可以選取 [其他] 做為網域供應商,然後選擇 [新增 CNAME 記錄]

        1. 依序點選 [其他方法] > [網域名稱供應商]
        2. 在選單中選取 [其他]
        3. 在「遇到問題嗎?」部分中,按一下 [新增 CNAME 記錄],然後按照畫面上的指示驗證網域擁有權。

          請注意,網域註冊商可能要花一分鐘才會設定好您的 CNAME。

      2. 返回 GCP 主控台的「新增自訂網域」表單。
    gcloud
    1. 執行以下 gcloud domains 指令開啟「網站管理員中心」 頁面:

      gcloud domains verify DOMAIN

      其中 DOMAIN 是您要驗證其擁有權的網域。

      範例:

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

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

      如果您的網域不支援使用 CNAME 記錄進行驗證,您可以選取 [其他] 做為網域供應商,然後選擇 [新增 CNAME 記錄]

      1. 依序點選 [其他方法] > [網域名稱供應商]
      2. 在選單中選取 [其他]
      3. 在「遇到問題嗎?」部分中,按一下 [新增 CNAME 記錄],然後按照畫面上的指示驗證網域擁有權。

        請注意,網域註冊商可能要花一分鐘才會設定好您的 CNAME。

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

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

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

    主控台

    如果未列出您的網域,請按一下 [重新整理網域]

    gcloud

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

    gcloud domains list-user-verified

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

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

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

    2. 在「資源」底下,按一下您要新增使用者或服務帳戶的網域。

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

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

      前往「服務帳戶」頁面

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

    主控台

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

    1. 指定您要對應的網域和子網域。表單已預先填入裸名網域和 www 子網域。
      • 裸名網域 (例如 example.com) 會對應到 http://example.com
      • 子網域 (例如 www) 會對應到 http://www.example.com
    2. 按一下 [儲存對應] 建立所需對應關係。
    3. 在「新增自訂網域」表單的最後一個步驟中,請記下列出的資源記錄,包括其類型和正式名稱 (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 保護自訂網域

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

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

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