接聽程式規則的轉換 - Elastic Load Balancing

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

接聽程式規則的轉換

規則轉換會在傳入請求路由至目標之前將其重寫。重寫請求不會變更評估規則條件時所做的路由決策。當用戶端傳送不同於目標預期的 URL 或主機標頭時,這很有用。

使用規則轉換會將修改路徑、查詢字串和主機標頭的責任卸載至負載平衡器。這不需要將自訂修改邏輯新增至應用程式程式碼,也不需要依賴第三方代理來執行修改。

Application Load Balancer 支援接聽程式規則的下列轉換。

轉換
host-header-rewrite

重寫請求中的主機標頭。轉換會使用規則表達式來比對主機標頭中的模式,然後將其取代為替代字串。

url-rewrite

重寫請求 URL。轉換會使用規則表達式來比對請求 URL 中的模式,然後將其取代為替代字串。

轉換基本概念
  • 您可以為每個規則新增一個主機標頭重寫轉換和一個 URL 重寫轉換。

  • 您無法將轉換新增至預設規則。

  • 如果沒有模式相符項目,則會將原始請求傳送至目標。

  • 如果有模式相符但轉換失敗,我們會傳回 HTTP 500 錯誤。

主機標頭重寫轉換

您可以修改主機標頭中指定的網域名稱。

範例 主機標頭轉換範例

您可以在建立或修改規則時指定轉換。如需詳細資訊,請參閱 create-rulemodify-rule 命令。以下是範例主機標頭轉換。它會將主機標頭轉換為內部端點。

[ { "Type": "host-header-rewrite", "HostHeaderRewriteConfig": { "Rewrites": [ { "Regex": "^mywebsite-(.+).com$", "Replace": "internal.dev.$1.myweb.com" } ] } } ]

例如,此轉換會將主機標頭重寫https://mywebsite-example.com/project-ahttps://internal.dev.example.myweb.com/project-a

URL 重寫轉換

您可以修改 URL 的路徑或查詢字串。透過在負載平衡器層級重寫 URL,即使後端服務變更,使用者和搜尋引擎的前端 URLs也可以保持一致。您也可以簡化複雜的 URL 查詢字串,讓客戶更容易輸入。

請注意,您無法修改 URL 的通訊協定或連接埠,只能修改路徑和查詢字串。

範例 URL 重寫轉換

您可以在建立或修改規則時指定轉換。如需詳細資訊,請參閱 create-rulemodify-rule 命令。以下是 URL 重寫轉換的範例。它會將目錄結構轉換為查詢字串。

[ { "Type": "url-rewrite", "UrlRewriteConfig": { "Rewrites": [ { "Regex": "^/dp/([A-Za-z0-9]+)/?$", "Replace": "/product.php?id=$1" } ] } } ]

例如,此轉換會將請求 URL 重寫https://www.example.com/dp/B09G3HRMWhttps://www.example.com/product.php?id=B09G3HRMW

URL 重寫與 URL 重新導向的差異

特性 URL 重新導向 URL 重寫
URL 顯示 瀏覽器地址列中的變更 瀏覽器地址列沒有變更
狀態碼 使用 301 (永久) 或 302 (暫時) 沒有狀態碼變更
處理 瀏覽器端 伺服器端
常見用途 網域變更、網站合併、修正中斷的連結 清除 SEO URLs、隱藏複雜的結構、提供舊版 URL 映射