全部產品
Search
文件中心

Edge Security Acceleration:網域名稱配置

更新時間:Jan 28, 2026

為使函數和Pages能通過自訂公網路徑訪問,您需要為其配置一個網域名稱作為觸發入口。邊緣安全加速 ESA提供網域名稱綁定路由兩種方式,用於將 HTTP/S 請求引導至您的函數和Pages

限制條件

無論是使用網域名稱綁定還是路由,都需要帳號下存在一個處於可用狀態的網站。

可用狀態是指網站已購買套餐且完成NS或CNAME的方式接入。

選擇合適的配置方式

image

特性

網域名稱綁定

路由

核心用途

將指定網域名稱(例如 api.example.com)的所有請求,全部交由同一個函數和Pages處理。

僅將特定網域名稱下匹配預設路徑(例如 example.com/api/*)的請求,路由到函數和Pages處理,其餘路徑的請求不受影響。

影響範圍

網域名稱下的全量流量

匹配規則的部分流量

配置方式

簡單,一步到位

靈活,需要配置匹配規則

適用情境

  • 專用的 API Gateway函數

  • 完整的 SSR(伺服器端渲染)應用

  • 對特定 API 路徑進行鑒權或日誌記錄

  • 為特定頁面路徑實現 A/B 測試

  • 攔截特定請求並返回自訂內容

使用網域名稱綁定

網域名稱綁定適用於將一個網域名稱的全部流量都定向到指定的函數和Pages進行處理。

網域名稱綁定功能允許您將函數和Pages連結至自己的網站網域名稱,在完成網域名稱綁定後,您可以直接使用該網域名稱對函數和Pages進行訪問。函數和Pages綁定的網域名稱需要歸屬於某個可用網站,在控制台配置後,ESA將自動在網站下添加一條綁定網域名稱的DNS記錄。

image
  1. 登入ESA控制台,在左側導覽列選擇邊緣計算 > 函數和Pages單擊需要進行綁定的函數和Pages

  2. 選擇網域名稱頁簽,單擊網域名稱綁定欄的添加網域名稱image

  3. 輸入您要為函數和Pages綁定的網域名稱資訊,例如pages.example.com。網域名稱添加後,將在網域名稱對應的網站下建立新的DNS記錄。

    說明

    使用網域名稱綁定功能時,新增的網域名稱將繼承對應網站下的各項配置,所以如果您的網站未配置SSL/TLS認證,則該綁定網域名稱無法使用HTTPS進行訪問。關於網站開啟SSL/TLS方式請參見SSL/TLS

    image

  4. 根據您的網站接入方式選擇對應的後續步驟:

    網站為NS接入

    若您的網站接入方式為NS接入,則待DNS生效後(約1分鐘),在瀏覽器訪問剛綁定的自訂網域名(如pages.example.com)即可查看。image

    網站為CNAME接入

    若您的網站為CNAME接入,需在您的網域名稱DNS解析服務位址配置CNAME記錄方可生效。

    1. 單擊新添加的自訂網域名右側的查看DNS記錄

      image

    2. 複製ESA為新增的DNS記錄產生的CNAME值。

      image

    3. 前往您的DNS服務商,將複製到的CNAME資訊以CNAME記錄的形式,一一對應添加至您的網域名稱解析記錄中:

      • 主機記錄:填寫自訂網域名的首碼,本例中填寫pages

      • 記錄類型:選擇CNAME類型

      • 記錄值:粘貼上一步複製的CNAME值

      image

    4. 返回ESA控制台,等待CNAME狀態顯示已配置即可。image在瀏覽器訪問剛綁定的自訂網域名(如pages.example.com)即可查看。image

使用路由配置

適用於僅將特定 URL 路徑的請求轉寄至函數和Pages處理,實現更精細化的流量控制。當請求與配置的URL匹配時,將由函數和Pages處理該請求,否則將繼續執行加速回源的ESA流程。如下圖所示,當您為example.com網站配置了example.com/a*的路由規則後,所有與路由規則匹配的路徑訪問例如/a/a1/a2都會由函數和Pages處理,而其他與路由規則不匹配的路徑訪問例如/b/c/d會繼續遵循加速回源或緩衝的流程。

image
  1. 登入ESA控制台,在左側導覽列選擇邊緣計算 > 函數和Pages單擊需要進行綁定的函數和Pages

  2. 選擇網域名稱頁簽,單擊路由欄的添加路由image

  3. 填寫路由名稱,在選擇網站列表中選擇目標網站,例如:example.com

  4. 選擇路由模式

    1. 簡單模式:適用於僅基於 URL(主機名稱+路徑)進行匹配的情境。例如,配置URL首碼為pages.example.com的所有請求都路由至函數和Pagesimage

    2. 自訂模式:適用於需要組合多個條件(如要求標頭、Cookie、要求方法等)進行複雜邏輯匹配的情境。您可以添加多個匹配條件,並設定條件間的邏輯關係(滿足所有/滿足任意)。例如,您可以配置一條規則:當 主機名稱 等於 www.example.com 並且 User-Agent 要求標頭包含 Mobile 時,才將請求轉寄至函數和Pagesimage

  5. 在瀏覽器中訪問匹配的路由路徑即可查看效果。

    image

重要
  • 如果路由使用簡單模式時,輸入的是*.example.comwww.example.com這種帶有首碼的網域名稱,需要在ESADNS記錄存在一條對應的記錄或手動添加一條記錄,否則訪問將失敗。

  • 函數路由如果存在多條配置,從上至下一旦有一條匹配成功,則跳出不再執行下面的匹配。

匹配規則

  • 路由配置必須同時包含網域名稱主機名稱和路徑URI資訊,因此任何只包含路徑URI的路由規則例如/path將無法配置。

  • 路由配置通過添加前後萬用字元*的方式來匹配更多請求,萬用字元*支援匹配零個或多個任一字元。例如example.com/*將匹配訪問example.com的所有請求。

  • 路由配置區分大小寫。例如example.com/aexample.com/A將是兩條不同的路由規則。

  • 路由配置不支援配置中間萬用字元*和參數。例如example.com/*/pathexample.com/path?param=1的形式都是不允許的。

  • 當訪問請求和多個路由配置都可以匹配時,將優先匹配更早配置的規則項。

旁路模式

開啟函數路由的旁路模式後,如果您的請求命中路由策略,請求將以子請求的方式旁路訪問函數和Pages服務。旁路模式的整體流程為:

imageimage
  1. 用戶端發起請求訪問ESA邊緣節點。

  2. 請求命中路由策略,被轉寄至函數和Pages處理,您可以在函數和Pages根據請求內容進行日誌打點、鑒權等操作。需要注意,開啟旁路模式時,請求體將不會被轉寄至函數和Pages

  3. 如果函數和Pages返回的響應中狀態代碼是200,則請求將繼續後續處理流程;如果返迴響應中狀態代碼非200,ESA將中止對該請求的處理並返回403給用戶端。

  4. 該請求將根據後續策略匹配請求,繼續執行ESA的緩衝匹配或加速回源邏輯。

  5. 快取命中後的響應或來源站點的響應返回ESA節點,此時該響應不會再由函數和Pages處理。

  6. 響應被轉寄至用戶端。

常見情境

  • 日誌打點情境:如果您希望對部分請求產生打點日誌,便可以將請求通過旁路模式轉寄至函數和Pages,並在函數中自訂日誌打點邏輯。

  • 大檔案下載鑒權情境:邊緣函數在將響應轉寄至用戶端時,會消耗CPU時間,如果響應內容過大,往往會造成CPU時間片超限,併產生額外的費用。您可以使用旁路模式通過函數和Pages完成鑒權,避免上述問題的發生。

常見問題

如何通過代碼進行旁路模式改造?

URL鑒權方式A為例:

  • 將入口函數由async fetch()改為async bypass()

  • 函數傳回值需要通過new ResponseBypass()構造。其中包含兩個參數

    • 第一個true或false,表示鑒權成功或失敗。

    • 如果第一個參數為false,則可傳入第二個參數status表示返回給用戶端的狀態代碼。

原鑒權方式A範例程式碼

import { createHash } from "node:crypto";

async function handleRequest(request) {
  const url = new URL(request.url);
  const path = url.pathname;
  const delta = 3600;

  const authKeyTypeA = url.searchParams.get('auth_key');

  const privateKey = 'your_secret_key'
  const currentTimestamp = Math.floor(Date.now() / 1000);

  if (!authKeyTypeA) {
    //鑒權失敗情境,邊緣預設返回403給用戶端。
    return new Response('Unauthorized', { 
      status: 401,
    });
  }

  const [timestamp, rand, uid, signature] = authKeyTypeA.split('-');

  if (currentTimestamp > parseInt(timestamp)+ delta) {
    //鑒權失敗情境,邊緣預設返回403給用戶端。
    return new Response('Link expired', {
      status: 403,
    });
  }

  const signString = [path, timestamp, rand, uid, privateKey].join('-');

  const md5 = createHash('md5').update(signString).digest('hex');

  if (md5 !== signature) {
  
    return new Response('Unauthorized', {
      status: 401
    });
  }

  // 如果資源在其他網域名稱,則請求後返回
  // const yourUrl = `https://your-dcdn-domain.com${path}${url.search}`
  // const cdnResponse = await fetch(yourUrl, request)
  // return new Response(cdnResponse.body, cdnResponse)

  // 大多情況下回源即可
  return fetch(request.url)
}

export default {
  async fetch(request) {
    return handleRequest(request)
  }
}

鑒權方式A使用旁路模式範例程式碼

import { createHash } from "node:crypto";

async function handleRequest(request) {
  const url = new URL(request.url);
  const path = url.pathname;
  const delta = 3600;

  const authKeyTypeA = url.searchParams.get("auth_key");

  const privateKey = "your_secret_key";
  const currentTimestamp = Math.floor(Date.now() / 1000);

  if (!authKeyTypeA) {
    //鑒權失敗情境,傳參false,邊緣預設返回403給用戶端。
    return new ResponseBypass(false, {
      status: 401,
    });
  }

  const [timestamp, rand, uid, signature] = authKeyTypeA.split("-");

  if (currentTimestamp > parseInt(timestamp) + delta) {
    //鑒權失敗情境,傳參false,邊緣預設返回403給用戶端。
    return new ResponseBypass(false, {
      status: 403,
    });
  }

  const signString = [path, timestamp, rand, uid, privateKey].join("-");

  const md5 = createHash("md5").update(signString).digest("hex");

  if (md5 !== signature) {
    //鑒權失敗情境,傳參false,邊緣預設返回403給用戶端。
    return new ResponseBypass(false, {
      status: 401,
    });
  }

  //鑒權成功情境,傳參true,則請求繼續走回源邏輯,且響應不再經過函數處理。
  const resSuccess = new ResponseBypass(true);
  return resSuccess;
}

export default {
  async bypass(request) {
    return handleRequest(request);
  },
};

如何修改網域名稱綁定?

如果您目前綁定的網域名稱及路由不能滿足您當前的業務需求,您可以已綁定的網域名稱及路由進行編輯或刪除操作。

  1. 登入ESA控制台,在左側導覽列選擇邊緣計算 > 函數和Pages單擊需要進行修改的函數和Pages

  2. 選擇網域名稱頁簽。

  3. 您可在網域名稱頁面,對已綁定的網域名稱進行刪除操作,已綁定的路由進行編輯刪除操作。