選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

當您從 F5 遷移到 AWS 上的 Application Load Balancer 時修改 HTTP 標頭 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

當您從 F5 遷移到 AWS 上的 Application Load Balancer 時修改 HTTP 標頭

由 Sachin Trivedi (AWS) 建立

Summary

當您將使用 F5 Load Balancer 的應用程式遷移至 Amazon Web Services (AWS) 並想要在 AWS 上使用 Application Load Balancer 時,遷移 F5 規則以進行標頭修改是常見的問題。Application Load Balancer 不支援標頭修改,但您可以使用 Amazon CloudFront 做為內容交付網路 (CDN) 和 Lambda@Edge 來修改標頭。

此模式說明必要的整合,並提供範例程式碼,以使用 AWS CloudFront 和 Lambda@Edge 進行標頭修改。

先決條件和限制

先決條件

  • 內部部署應用程式,使用 F5 負載平衡器搭配使用 取代 HTTP 標頭值的組態if, else。如需此組態的詳細資訊,請參閱 F5 產品文件中的 HTTP::header。 

限制

  • 此模式適用於 F5 負載平衡器標頭自訂。對於其他第三方負載平衡器,請檢查負載平衡器文件以取得支援資訊。

  • 您用於 Lambda@Edge 的 Lambda 函數必須位於美國東部 (維吉尼亞北部) 區域。

架構

下圖顯示 AWS 上的架構,包括 CDN 和其他 AWS 元件之間的整合流程。

使用 Amazon CloudFront 和 Lambda@Edge 修改標頭的架構

工具

AWS 服務

  • Application Load Balancer - Application Load Balancer 是 AWS 全受管負載平衡服務,可在開放系統互連 (OSI) 模型的第七層運作。它平衡多個目標的流量,並支援基於 HTTP 標頭和方法、查詢字串以及主機型或路徑型路由的進階路由請求。

  • Amazon CloudFront – Amazon CloudFront 是一種 Web 服務,可加速將靜態和動態 Web 內容,例如 .html、.css、.js 和映像檔案分發給使用者。CloudFront 透過稱為節點的資料中心全球網路提供內容,以降低延遲並改善效能。

  • Lambda@Edge ─ Lambda@Edge 是 AWS Lambda 的延伸,可讓您執行函數來自訂 CloudFront 提供的內容。您可以在美國東部 (維吉尼亞北部) 區域中編寫函數,然後將函數與 CloudFront 分佈建立關聯,以在全球各地自動複寫程式碼,而無需佈建或管理伺服器。這可降低延遲並改善使用者體驗。

Code

下列範例程式碼提供修改 CloudFront 回應標頭的藍圖。遵循 Epics 區段中的指示來部署程式碼。

exports.handler = async (event, context) => {     const response = event.Records[0].cf.response;     const headers = response.headers;     const headerNameSrc = 'content-security-policy';     const headerNameValue = '*.xyz.com';     if (headers[headerNameSrc.toLowerCase()]) {         headers[headerNameSrc.toLowerCase()] = [{             key: headerNameSrc,             value: headerNameValue,         }];         console.log(`Response header "${headerNameSrc}" was set to ` +                     `"${headers[headerNameSrc.toLowerCase()][0].value}"`);     }     else {             headers[headerNameSrc.toLowerCase()] = [{             key: headerNameSrc,             value: headerNameValue,             }];     }     return response; };

史詩

任務描述所需的技能
建立 CloudFront Web 分佈。

在此步驟中,您會建立 CloudFront 分佈,以告知 CloudFront 您要從何處交付內容,以及如何追蹤和管理內容交付的詳細資訊。

若要使用主控台建立分佈,請登入 AWS 管理主控台、開啟 CloudFront 主控台,然後遵循 CloudFront 文件中的步驟。

雲端管理員

建立 CDN 分佈

任務描述所需的技能
建立 CloudFront Web 分佈。

在此步驟中,您會建立 CloudFront 分佈,以告知 CloudFront 您要從何處交付內容,以及如何追蹤和管理內容交付的詳細資訊。

若要使用主控台建立分佈,請登入 AWS 管理主控台、開啟 CloudFront 主控台,然後遵循 CloudFront 文件中的步驟。

雲端管理員
任務描述所需的技能
建立和部署 Lambda@Edge 函數。

您可以使用修改 CloudFront 回應標頭的藍圖來建立 Lambda@Edge 函數。(其他 bluePrints 可用於不同的使用案例;如需詳細資訊,請參閱 CloudFront 文件中的 Lambda@Edge 範例函數。) 

若要建立 Lambda@Edge 函數:

  1. 登入 AWS 管理主控台,並開啟位於 https://console.aws.amazon.com/lambda/ 的 AWS Lambda 主控台。

  2. 請確定您位於美國東部 (維吉尼亞北部) 區域。CloudFront 藍圖僅適用於此區域。

  3. 選擇 Create function (建立函數)

  4. 選擇使用藍圖,然後在藍圖搜尋欄位中輸入 cloudfront。 

  5. 選擇 cloudfront-modify-response-header藍圖,然後選擇設定

  6. 基本資訊頁面上,輸入下列資訊:

    1. 輸入函數名稱。

    2. 針對 Execution role (執行角色),選擇 Create a new role from AWS policy templates (從 AWS 政策範本建立新角色)

    3. 關聯所需的 AWS Identity and Access Management (IAM) 角色名稱。

  7. 選擇 Create function (建立函數)

  8. 在頁面的設計工具區段中,選擇您的函數名稱。

  9. 函數程式碼區段中,將範本程式碼取代為先前在此模式提供的範例程式碼,在程式碼區段中。

  10. 在範例程式碼中,將 取代xyz.com為您的網域名稱。 

  11. 選擇 Save (儲存)。

AWS 管理員
部署 Lambda@Edge 函數。

請遵循教學課程的步驟 4:在 Amazon CloudFront 文件中建立簡單的 Lambda@Edge 函數,以設定 CloudFront 觸發並部署函數。

AWS 管理員

建立和部署 Lambda@Edge 函數

任務描述所需的技能
建立和部署 Lambda@Edge 函數。

您可以使用修改 CloudFront 回應標頭的藍圖來建立 Lambda@Edge 函數。(其他 bluePrints 可用於不同的使用案例;如需詳細資訊,請參閱 CloudFront 文件中的 Lambda@Edge 範例函數。) 

若要建立 Lambda@Edge 函數:

  1. 登入 AWS 管理主控台,並開啟位於 https://console.aws.amazon.com/lambda/ 的 AWS Lambda 主控台。

  2. 請確定您位於美國東部 (維吉尼亞北部) 區域。CloudFront 藍圖僅適用於此區域。

  3. 選擇 Create function (建立函數)

  4. 選擇使用藍圖,然後在藍圖搜尋欄位中輸入 cloudfront。 

  5. 選擇 cloudfront-modify-response-header藍圖,然後選擇設定

  6. 基本資訊頁面上,輸入下列資訊:

    1. 輸入函數名稱。

    2. 針對 Execution role (執行角色),選擇 Create a new role from AWS policy templates (從 AWS 政策範本建立新角色)

    3. 關聯所需的 AWS Identity and Access Management (IAM) 角色名稱。

  7. 選擇 Create function (建立函數)

  8. 在頁面的設計工具區段中,選擇您的函數名稱。

  9. 函數程式碼區段中,將範本程式碼取代為先前在此模式提供的範例程式碼,在程式碼區段中。

  10. 在範例程式碼中,將 取代xyz.com為您的網域名稱。 

  11. 選擇 Save (儲存)。

AWS 管理員
部署 Lambda@Edge 函數。

請遵循教學課程的步驟 4:在 Amazon CloudFront 文件中建立簡單的 Lambda@Edge 函數,以設定 CloudFront 觸發並部署函數。

AWS 管理員

相關資源

CloudFront 文件

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。