對應自訂網域

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 的值對應到網域 DNS 設定的對應欄位。舉例來說,在 Google Domains 中,CNAME 必須採用以下設定:
      名稱類型存留時間資料
      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) 保護自訂網域

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

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

這個網頁
Node.js 適用的 App Engine 彈性環境文件