跳至內容

如何設定 CloudFront 將主機標頭轉送至原始伺服器?

2 分的閱讀內容
0

在我的 Amazon CloudFront 發佈項目上設定的原始伺服器使用虛擬主機。我想設定我的發佈項目以將主機標頭轉送到我的原始伺服器。

簡短描述

若要設定您的發佈項目,以將主機標頭轉送至原始伺服器,請執行下列其中一個動作:

  • 建立快取政策和原始伺服器請求政策。
  • 編輯發佈項目中現有行為的設定。

如果您在沒有自訂網域的 API 閘道原始伺服器建立自訂政策,請勿轉送主機標頭。否則,您將收到 "403 error"。

**重要:**對於 Amazon Simple Storage Service (Amazon S3) 原始伺服器,CloudFront 不支援以主機標頭為基礎的快取。如需詳細資訊,請參閱選取快取所依據的標頭

解決方法

建立快取政策和原始伺服器請求政策

請完成下列步驟:

  1. 開啟 CloudFront console (CloudFront 主控台)。
  2. 在導覽窗格中,選擇 Policies (政策)。
  3. Custom policies (自訂政策) 區段中,選擇 Create cache policy (建立快取政策)。
  4. Cache key settings (快取鍵設定) 下方的 Headers (標頭),選擇 Include the following headers (包含下列標頭)。
  5. Add header (新增標頭) 下拉式清單中,選擇 Host (主機)。
  6. 根據您的需求完成快取政策的其他設定。
  7. 選擇 Create (建立)。
  8. 將政策附加至 CloudFront 發佈項目的相關行為

編輯發佈項目中現有行為的設定

請完成下列步驟:

  1. 開啟 CloudFront console (CloudFront 主控台)。
  2. 選取您的發佈項目。
  3. 選擇 Behaviors (行為) 索引標籤,然後選取要將主機標頭轉送至的路徑。
  4. 選擇 Edit (編輯)。
  5. 確認 Cache key and origin requests (快取鍵和原始伺服器請求) 已設定為 Legacy cache settings (舊版快取設定)。
    **注意:**如果未選取 Legacy cache settings (舊版快取設定),請完成上一節的步驟來建立快取政策。
  6. Legacy cache settings (舊版快取設定) 下方的 Headers (標頭),選擇 Include the following headers (包含下列標頭)。
  7. Add header (新增標頭) 功能表中,選擇 Host (主機)。
  8. 選擇 Save Changes (儲存變更)。

(選用) 以不同的名稱轉送標頭

若要使用自訂或其他標頭名稱轉送主機標頭值,請使用 CloudFront 函式AWS Lambda@Edge 函式

若要以不同的名稱轉送標頭,請完成以下步驟:

  1. 檢查傳入的主機標頭。
    **注意:**對於 CloudFront 函式,請檢查檢視器請求事件。對於 Lambda@Edge,請檢查檢視或原始伺服器請求事件
  2. 若要將用戶端請求中的主機標頭值儲存到標頭中,請在檢視器請求中使用 Lambda 函式處理常式命令。
    注意:例如,如果傳入的主機標頭為主機,請新增一個具有相同值的新標頭。請參閱以下程式碼範例:
    function handler(event) {    const request = event.request;
        const headers = request.headers;
        const host = request.headers.host.value;
        headers['x-forwarded-host'] = { "value": host }
        return request
    }
    **注意:**此範例函式會啟動檢視器請求事件。
  3. 若要將自訂標頭轉送至原始伺服器,請設定快取或主機請求政策,以將 X-Forwarded-Host 標頭列入允許清單。如需詳細資訊,請參閱自訂原始伺服器的請求和回應行為

相關資訊

根據請求標頭快取內容

使用政策控制快取鍵