Application Load Balancer - Elastic Load Balancing

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

Application Load Balancer

負載平衡器做為用戶端的單一聯絡點。用戶端將請求傳送到負載平衡器,而負載平衡器將請求傳送到如 EC2 執行個體等的目標。若要設定您的負載平衡器,您需要建立目標群組,然後使用您的目標群組來登錄目標。您也可以建立接聽程式,以檢查來自用戶端的連線請求,並建立接聽程式規則,將來自用戶端的請求路由到一或多個目標群組中的目標。

如需詳細資訊,請參閱 Elastic Load Balancing 使用者指南中的 Elastic Load Balancing的運作方式

負載平衡器的子網路

建立 Application Load Balancer 時,必須啟用內含目標的區域。若要啟用區域,請在該區域中指定子網路。Elastic Load Balancing 會在您指定的每個區域建立負載平衡器節點。

考量事項
  • 每個已啟用的區域擁有至少一個已註冊的目標時,負載平衡器的效率最高。

  • 如果您在某個區域內註冊目標但未啟用該區域,這些已註冊的目標便不會接收來自負載平衡器的流量。

  • 如果您為負載平衡器啟用多個區域,這些區域必須是相同類型。例如,您無法同時啟用可用區域和 Local Zone。

  • 您可以指定與您共用的子網路。

Application Load Balancers 支援以下子網路類型。

可用區域子網路

您必須選取至少兩個可用區域子網路。將適用以下限制:

  • 每個子網路都必須來自不同的可用區域。

  • 為了確保負載平衡器可以適當調整規模,請確認負載平衡器的每個可用區域子網路有一個 CIDR 區塊,並具有至少一個 /27 位元遮罩 (例如,10.0.0.0/27),且每個子網路至少有八個可用 IP 地址。需要有八個可用 IP 地址,才能讓負載平衡器視需要橫向擴展。負載平衡器會使用這些 IP 地址與目標建立連線。如果沒有這些地址,Application Load Balancer 可能會在嘗試取代節點時遇到困難,而導致其變成失敗狀態。

    注意:如果嘗試擴展時,Application Load Balancer 子網路用完可用的 IP 地址,Application Load Balancer 將在容量不足的情況下執行。在此期間,舊節點將繼續為流量提供服務,但是在嘗試建立連線時,延遲的擴展嘗試可能會導致 5xx 錯誤或逾時。

Local Zone 子網路

您可以指定一個或多個 Local Zone 子網路。將適用以下限制:

  • 您無法搭 AWS WAF 配負載平衡器使用。

  • 您無法將 Lambda 函數做為目標使用。

  • 您無法使用黏性工作階段或應用程式黏性。

Outpost 子網路

您可以指定單一的 Outpost 子網路。將適用以下限制:

  • 內部部署資料中心必須已安裝和設定 Outpost。Outpost 與其 AWS 區域之間必須有可靠的網路連線。如需詳細資訊,請參閱 AWS Outposts 使用者指南

  • 負載平衡器在負載平衡器節點的 Outpost 上需要兩個 large 執行個體。下表所示是支援的執行個體類型。負載平衡器會視需要擴展,一次調整一個節點的大小 (從 largexlarge,然後從 xlarge2xlarge,接著從 2xlarge4xlarge)。將節點擴展至最大的執行個體大小之後,如果您需要額外的容量,負載平衡器會將 4xlarge 執行個體新增為負載平衡器節點。如果您沒有足夠的執行個體容量或可用的 IP 地址來擴展負載平衡器,負載平衡器會向 AWS Health Dashboard 報告事件,且負載平衡器狀態會變為 active_impaired

  • 您可以依執行個體 ID 或 IP 地址來註冊目標。如果您在該 AWS 地區註冊前哨站的目標,則不會使用它們。

  • 無法使用以下功能:作為目標的 Lambda 函數、 AWS WAF 整合、粘性會話、身分驗證支援以及與 AWS Global Accelerator整合。

Application Load Balancer 可部署在 Outpost 的 c5/c5d、m5/m5d 或 r5/r5d 執行個體上。下表顯示負載平衡器可在 Outpost 上使用的每個執行個體類型的大小和 EBS 磁碟區:

執行個體類型和大小 EBS 磁碟區 (GB)
c5/c5d
大型 50
xlarge 50
2xlarge 50
4xlarge 100
m5/m5d
大型 50
xlarge 50
2xlarge 100
4xlarge 100
r5/r5d
大型 50
xlarge 100
2xlarge 100
4xlarge 100

負載平衡器安全群組

安全群組扮演防火牆的角色,可控制允許進出負載平衡器的流量。您可以選擇連接埠和通訊協定,以同時允許傳入和傳出流量。

與負載平衡器相關聯之安全群組的規則,在接聽程式連接埠和運作狀態檢查連接埠上都必須允許這兩個方向的流量。當您將接聽程式新增至負載平衡器,或更新目標群組的運作狀態檢查連接埠時,您必須檢閱安全群組規則,以確保它們在新的連接埠上同時允許這兩個方向的流量。如需詳細資訊,請參閱 建議的規則

負載平衡器狀態

負載平衡器可以是以下其中一個狀態:

provisioning

正在設定負載平衡器。

active

負載平衡器已設定完成並準備好路由流量。

active_impaired

負載平衡器正在路由流量,但不具備擴展所需的資源。

failed

無法設定的負載平衡器。

負載平衡器屬性

以下是負載平衡器屬性:

access_logs.s3.enabled

指出在 Amazon S3 中存放的存取日誌是否啟用。預設值為 false

access_logs.s3.bucket

存取日誌的 Amazon S3 儲存貯體名稱。如果啟用存取日誌,則此為必要屬性。如需詳細資訊,請參閱 啟用存取日誌

access_logs.s3.prefix

Amazon S3 儲存貯體中的位置字首。

client_keep_alive.seconds

用戶端保持活動的值,以秒為單位。預設值為 3600 秒。

deletion_protection.enabled

表示是否已啟用刪除保護。預設值為 false

idle_timeout.timeout_seconds

閒置逾時值 (以秒為單位)。預設值為 60 秒。

ipv6.deny_all_igw_traffic

封鎖網際網路閘道 (IGW) 對負載平衡器的存取,以防止透過網際網路閘道對內部負載平衡器進行非預期存取。如果是面向網際網路的負載平衡器,設為 false,如果是內部負載平衡器,則設為 true。此屬性不會阻止非 IGW 網際網路存取 (例如透過對等互連、Transit Gateway 或)。 AWS Direct Connect AWS VPN

routing.http.desync_mitigation_mode

決定負載平衡器如何處理可能對應用程式造成安全風險的請求。可能的值為 monitordefensivestrictest。預設值為 defensive

routing.http.drop_invalid_header_fields.enabled

指出具有無效標頭欄位的 HTTP 標頭是否已被負載平衡器 (true) 移除或已路由至目標 (false)。預設值為 false。如 HTTP 欄位名稱登錄檔中所述,Elastic Load Balancing 會要求有效的 HTTP 標頭名稱符合規則運算式 [-A-Za-z0-9]+。每個名稱由英數字元或連字號組成。如果要從請求中移除不符合此模式的 HTTP 標頭,請選取 true

routing.http.preserve_host_header.enabled

指示 Application Load Balancer 是否應保留 HTTP 請求中的 Host 標頭,並將該標頭傳送到目標而不進行任何變更。可能的值為 truefalse。預設值為 false

routing.http.x_amzn_tls_version_and_cipher_suite.enabled

指示在向目標傳送用戶端請求前,是否在用戶端請求中新增這兩個標頭 (x-amzn-tls-versionx-amzn-tls-cipher-suite) (內含與交涉 TLS 版本和密碼套件相關的資訊)。x-amzn-tls-version 標頭包含有關與用戶端交涉的 TLS 通訊協定版本的資訊,而 x-amzn-tls-cipher-suite 標頭包含有關與用戶端交涉的密碼套件的資訊。兩個標頭都採用 OpenSSL 格式。此屬性的可能值為 truefalse。預設值為 false

routing.http.xff_client_port.enabled

指示 X-Forwarded-For 標頭是否應該保留用戶端用來連線到負載平衡器的來源連接埠。可能的值為 truefalse。預設值為 false

routing.http.xff_header_processing.mode

可讓您在 Application Load Balancer 將 HTTP 請求傳送至目標之前修改、保留或移除該請求中的 X-Forward-For 標頭。可能的值為 appendpreserveremove。預設值為 append

  • 如果該值為 append,Application Load Balancer 會在將 HTTP 請求傳送至目標之前將 HTTP 請求中的 (最近一次跳轉的) 用戶端 IP 地址新增至該請求中的 X-Forward-For 標頭。

  • 如果該值為 preserve,Application Load Balancer 會保留 HTTP 請求中的 X-Forward-For 標頭,並將該請求傳送到目標,而不進行任何變更。

  • 如果該值為 remove,Application Load Balancer 會在將 HTTP 請求傳送至目標之前移除該請求中的標頭 X-Forward-For

routing.http2.enabled

指出是否啟用 HTTP/2。預設值為 true

waf.fail_open.enabled

指出在無法將要求轉送至目標時,是否允許已 AWS WAF啟用的負載平衡器將要求路由至目標 AWS WAF。可能的值為 truefalse。預設值為 false

注意

引入了 routing.http.drop_invalid_header_fields.enabled 屬性,可提供 HTTP 去同步保護。新增了 routing.http.desync_mitigation_mode 屬性,可為應用程式提供更全面的 HTTP 去同步保護。您不需要同時使用這兩個屬性,可選擇其中一個屬性,具體取決於您的應用程式需求。

IP 地址類型

您可以設定 IP 地址類型,用戶端可以使用此類型的 IP 地址存取面向網際網路的負載平衡器和內部負載平衡器。

應用程式負載平衡器支援下列 IP 位址類型:

ipv4

用戶端必須使用 IPv4 地址 (例如,192.0.2.1) 才能連接至負載平衡器

dualstack

用戶端可以使用 IPv4 地址 (例如,192.0.2.1) 和 IPv6 地址 (例如,2001:0db8:85a3:0:0:8a2e:0370:7334) 連接至負載平衡器。

考量事項
  • 負載平衡器會根據目標群組的 IP 地址類型與目標進行通訊。

  • 當您啟用負載平衡器的雙堆疊模式時,Elastic Load Balancing 會提供負載平衡器的 AAAA DNS 記錄。使用 IPv4 地址與負載平衡器通訊的用戶端可解析 A DNS 記錄。使用 IPv6 地址與負載平衡器通訊的用戶端可解析 AAAA DNS 記錄。

  • 透過網際網路閘道存取內部雙堆疊負載平衡器會遭到封鎖,以防止來自網際網路的非預期存取。但是,這並不會阻止非 IGW 網際網路存取 (例如透過對等互連、Transit Gateway 或)。 AWS Direct Connect AWS VPN

dualstack-without-public-ipv4

用戶端必須使用 IPv6 位址 (例如,2001:0 資料庫 8:85 和 3:0:8 a2e: 0370:7334) 連線到負載平衡器。

考量事項
  • Application Load Balancer 身份驗證僅在連線到身分識別提供者 (IdP) 或 Amazon Cognito 端點時支援 IPv4。如果沒有公用 IPv4 位址,負載平衡器將無法完成驗證程序,進而導致 HTTP 500 錯誤。

如需 IP 位址類型的詳細資訊,請參閱Application Load Balancer 的 IP 地址類型

Application Load Balancer 資源對應

應用程式負載平衡器資源對應提供負載平衡器架構的互動式顯示,包括其關聯的接聽程式、規則、目標群組和目標。資源對應也會反白顯示所有資源之間的關係和路由路徑,以視覺化方式呈現負載平衡器的組態。

使用主控台檢視應用程式負載平衡器的資源對應
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格上選擇 Load Balancers (負載平衡器)

  3. 選取負載平衡器。

  4. 選擇資源對映索引標籤以顯示負載平衡器的資源對映。

資源對映元件

地圖檢視

「應用程式負載平衡器」資源對映中有兩種檢視:「觀」和「狀態不良的目標對映」。預設情況下會選取「概觀」,並顯示所有負載平衡器的資源。選取「狀況不良的目標對映」檢視只會顯示狀況不良的目標及其相關聯的資源。

狀態不良的目標對映檢視可用來疑難排解未通過健康狀態檢查的目標。如需詳細資訊,請參閱 使用資源對應疑難排解狀況不良的目標

資源群組

應用程式負載平衡器資源對映包含四個資源群組,每種資源類型各一個。資源群組為「監聽器」、「規則」、「目標群組」和「目標」。

資源並排

群組中的每個資源都有自己的圖標,其中會顯示有關該特定資源的詳細資訊。

  • 將游標暫留在資源圖標上,會反白顯示其與其他資源之間的關係。

  • 選取資源圖標會反白該資源與其他資源之間的關係,並顯示有關該資源的其他詳細資訊。

    • 規則條件:每個規則的條件。

    • 目標群組健全狀況摘要:每個健全狀況狀態的已註冊目標數目。

    • 目標健全狀況目標目前的健全狀況狀態和說明。

    注意

    您可以關閉 [顯示資源詳細資料] 以隱藏資源對映中的其他詳細資料。

  • 每個資源圖標都包含一個連結,選取此連結後,會導覽至該資源的詳細資訊頁面。

    • 監聽器-選取偵聽程式通訊協定:連接埠。例如:HTTP:80

    • 規則-選取規則動作。例如:Forward to target group

    • 目標群組-選取目標群組名稱。例如:my-target-group

    • 目標-選取目標 ID。例如:i-1234567890abcdef0

匯出資源對應

選取 [匯] 可讓您選擇將應用程式負載平衡器資源對映的目前檢視匯出為 PDF。

負載平衡器連線

處理要求時,負載平衡器會維護兩個連線:一個與用戶端的連線,另一個與目標的連線。負載平衡器與用戶端之間的連線也稱為前端連線。負載平衡器與目標之間的連線也稱為後端連線。

連線閒置逾時

連線閒置逾時是指在負載平衡器關閉連線之前,現有的用戶端或目標連線可以保持非作用中狀態,而不會傳送或接收任何資料。

若要確保冗長的作業 (例如檔案上傳) 有時間完成,請在每個閒置逾時期間結束之前傳送至少 1 個位元組的資料,並視需要增加閒置逾時期間的長度。也建議您將應用程式的閒置逾時設定為大於負載平衡器所設定的閒置逾時。否則,如果應用程式不正常地關閉與負載平衡器的 TCP 連線,負載平衡器可能會在收到指示連線已關閉的封包之前傳送請求給應用程式。如果是這種情況,則負載平衡器會向用戶端傳送「HTTP 502 錯誤閘道」錯誤。

根據預設,Elastic Load Balancing 會將負載平衡器的閒置逾時值設定為 60 秒或 1 分鐘。使用下列程序來設定不同的閒置逾時值。

使用主控台更新連線閒置逾時值
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格上選擇 Load Balancers (負載平衡器)

  3. 選取負載平衡器。

  4. 屬性索引標籤中,選擇編輯

  5. 在 [流量組態] 下,輸入 [連線閒置逾時] 的值。有效範圍為 1 到 4000 秒。

  6. 選擇儲存變更

若要使用更新閒置逾時值 AWS CLI

屬性來使用 modify-load-balancer-attributesidle_timeout.timeout_seconds 命令。

HTTP 用戶端保持活動時間

HTTP 用戶端保持活動持續時間是「Application Load Balancer」維持與用戶端之間持續 HTTP 連線的最長時間長度。設定的 HTTP 用戶端 keepalive 持續時間過後,Application Load Balancer 會接受一個要求,並傳回正常關閉連線的回應。

負載平衡器傳送的回應類型取決於用戶端連線所使用的 HTTP 版本。對於使用 HTTP 1.x 連線的用戶端,負載平衡器會傳送包含欄位Connection: close的 HTTP 標頭。對於使用 HTTP/2 連線的用戶端,負載平衡器會傳送框架。GOAWAY

根據預設,應用程式負載平衡器會將 HTTP 用戶端保持作用持續時間值設定為 3600 秒或 1 小時。HTTP 用戶端保持活動持續時間不能關閉或設定為低於 60 秒的最低值,但是您可以將 HTTP 用戶端保持活動持續時間增加到最長 604800 秒或 7 天。應用程式負載平衡器會在一開始與用戶端建立 HTTP 連線時,開始啟動 HTTP 用戶端持續作用期間。當沒有流量時,持續時間期間會繼續執行,並且在建立新連線之前不會重設。

注意

將應用程式負載平衡器的 IP 位址類型切換至dualstack-without-public-ipv4負載平衡器時,會等待所有作用中的連線完成。若要欺騙切換應用程式負載平衡器 IP 位址類型所需的時間量,請考慮降低 HTTP 用戶端保持活動時間。

應用程式負載平衡器會在初始連線期間指派 HTTP 用戶端保持作用持續時間一次。當更新 HTTP 用戶端保持活動持續時間時,這可能會導致同時連接與不同的 HTTP 用戶端保持活動持續時間值。現有的連線會保留在其初始連線期間套用的 HTTP 用戶端保持活動持續時間值,而任何新連線都會收到更新的 HTTP 用戶端保持活動持續時間值。

使用主控台更新用戶端保持作用持續時間值
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格上選擇 Load Balancers (負載平衡器)

  3. 選取負載平衡器。

  4. 屬性索引標籤中,選擇編輯

  5. 流量組態下,輸入 HTTP 用戶端保持作用持續時間的值。有效範圍為 60 到 604800 秒。

  6. 選擇儲存變更

使用更新用戶端保持作用持續時間值 AWS CLI

屬性來使用 modify-load-balancer-attributesclient_keep_alive.seconds 命令。

跨區域負載平衡

使用 Application Load Balancer 時,跨區域負載平衡依預設會開啟,而且無法在負載平衡器層級進行變更。如需詳細資訊,請參閱 Elastic Load Balancing User Guide 中的 Cross-zone load balancing 章節。

可以在目標群組層級關閉跨區域負載平衡。如需詳細資訊,請參閱 關閉跨區域負載平衡

刪除保護

為避免您的負載平衡器上遭意外刪除,您可以啟用刪除保護。您的負載平衡器的刪除保護預設為停用。

如果您為負載平衡器啟用刪除保護,則必須先停用才可刪除負載平衡器。

使用主控台來啟用刪除保護
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格上選擇 Load Balancers (負載平衡器)

  3. 選取負載平衡器。

  4. 屬性索引標籤中,選擇編輯

  5. 組態下方,開啟刪除保護

  6. 選擇儲存變更

使用主控台來停用刪除保護
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格上選擇 Load Balancers (負載平衡器)

  3. 選取負載平衡器。

  4. 屬性索引標籤中,選擇編輯

  5. 組態頁面下方,關閉刪除保護

  6. 選擇儲存變更

啟用或停用刪除保護 AWS CLI

屬性來使用 modify-load-balancer-attributesdeletion_protection.enabled 命令。

去同步緩解模式

去同步緩解模式可保護應用程式免於因 HTTP 去同步而發生問題。負載平衡器會根據其威脅層級對每個要求進行分類,允許安全要求,然後根據您指定的緩和模式來降低風險。非同步緩和模式分為監控、防禦性和最嚴格。預設值為防禦模式,可針對 HTTP 非同步提供持久的緩和措施,同時維持應用程式的可用性。您可以切換至最嚴格模式,以確保應用程式只接收符合 RFC 7230 的請求。

http_desync_guardian 程式庫會分析 HTTP 請求,以防止 HTTP 去同步攻擊。如需詳細資訊,請參閱開 GitHub啟 HTTP 不同步守護功能。

分類

分類如下:

  • 合規 — 要求符合 RFC 7230,不會造成任何已知的安全威脅。

  • 可接受 — 要求不符合 RFC 7230,但不會造成已知的安全威脅。

  • 不明確 — 要求不符合 RFC 7230,但造成風險,因為各種 Web 伺服器和代理的處理方式不同。

  • 嚴重 — 要求造成高安全性風險。負載平衡器會封鎖要求,傳送提供 400 回應至用戶端,並關閉用戶端連線。

如果要求不符合 RFC 7230,負載平衡器會增加 DesyncMitigationMode_NonCompliant_Request_Count 指標。如需詳細資訊,請參閱 Application Load Balancer 指標

每個請求的分類都包含在負載平衡器存取日誌中。如果請求不符合規定,存取日誌會包含分類原因代碼。如需詳細資訊,請參閱 分類原因

模式

下表說明 Application Load Balancer 如何根據模式和分類處理請求。

分類 監控模式 防禦性模式 最嚴格模式
合規 允許 已允許 允許
可接受 允許 允許 封鎖
不明確 允許 允許¹ 封鎖
嚴重 允許 封鎖 封鎖

¹ 路由傳送要求,但關閉用戶端和目標連接。如果負載平衡器在防禦模式下收到大量「不明確」請求,則可能會產生額外費用。這是因為每秒增加的新連線數目會提高每小時使用的負載平衡器容量單位 (LCU)。您可以使用 NewConnectionCount 指標,來比較負載平衡器在監控模式和防禦模式下建立新連線的方式。

使用主控台更新非同步緩和模式
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格上選擇 Load Balancers (負載平衡器)

  3. 選取負載平衡器。

  4. 屬性索引標籤中,選擇編輯

  5. 封包處理下,在去同步緩解模式中,選擇防禦最嚴格監控

  6. 選擇儲存變更

若要使用更新不同步緩和模式 AWS CLI

使用 modify-load-balancer-attributes 命令,同時將 routing.http.desync_mitigation_mode 屬性設為 monitordefensivestrictest

主機標頭保留

啟用保留主機標頭屬性後,Application Load Balancer 會保留 HTTP 請求中的 Host 標頭,並將標頭傳送到目標,而不進行任何修改。如果 Application Load Balancer 收到多個 Host 標頭,則會全部保留。只會將接聽程式規則套用至收到的第一個 Host 標頭。

依預設,如果未啟用保留主機標頭屬性,則 Application Load Balancer 會以下列方式修改 Host 標頭:

未啟用主機標頭保留,且接聽程式連接埠不是預設連接埠時:未使用預設連接埠 (連接埠 80 或 443) 時,如果用戶端尚未附加連接埠號碼,則我們會將該號碼附加至主機標頭。例如,如果接聽程式連接埠不是預設連接埠 (例如 8080),則內含 Host: www.example.com 之 HTTP 請求中的 Host 標頭會修改為 Host: www.example.com:8080

未啟用主機標頭保留,且接聽程式連接埠為預設連接埠 (連接埠 80 或 443) 時:對於預設的接聽程式連接埠 (連接埠 80 或 443),我們不會將連接埠號碼附加至傳出主機標頭。已存在於傳入主機標頭中的任何連接埠號碼都會遭到移除。

下表顯示更多範例,說明 Application Load Balancer 如何根據接聽程式連接埠處理 HTTP 請求中的主機標頭。

接聽程式連接埠 範例請求 請求中的主機標頭 主機標頭保留已停用 (預設行為) 主機標頭保留已啟用
在預設的 HTTP/HTTPS 接聽程式上傳送請求。 GET /index.html HTTP/1.1 Host: example.com example.com example.com example.com
請求在默認 HTTP 接聽程序上發送,並且主機頭具有端口(例如,80 或 443)。 GET /index.html HTTP/1.1 Host: example.com:80 example.com:80 example.com example.com:80
請求具有絕對路徑。 GET https://dns_name/index.html HTTP/1.1 Host: example.com example.com dns_name example.com
要求會在非預設接聽程式連接埠上傳送 (例如 8080) GET /index.html HTTP/1.1 Host: example.com example.com example.com:8080 example.com
在非預設接聽程式連接埠上傳送請求,並且主機標頭具有連接埠 (例如 8080)。 GET /index.html HTTP/1.1 Host: example.com:8080 example.com:8080 example.com:8080 example.com:8080
使用控制台啟用主機標頭保留
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格中,選擇 Load Balancers (負載平衡器)

  3. 選取負載平衡器。

  4. 屬性索引標籤中,選擇編輯

  5. 封包處理下方,開啟保留主機標頭

  6. 選擇儲存變更

若要使用啟用主機標頭保留 AWS CLI

使用 modify-load-balancer-attributes 命令,同時將 routing.http.preserve_host_header.enabled 屬性設為 true

應用程式負載平衡器和 AWS WAF

您可以 AWS WAF 與應用程式負載平衡器搭配使用,根據 Web 存取控制清單 (Web ACL) 中的規則來允許或封鎖要求。如需詳細資訊,請參閱 AWS WAF Developer Guide 中的 Working with web ACLs

根據預設,如果負載平衡器無法從中取得回應 AWS WAF,則會傳回 HTTP 500 錯誤,而且不會轉寄要求。如果您需要負載平衡器將要求轉送至目標,即使目標無法聯絡 AWS WAF,您可以啟用 AWS WAF 整合。若要檢查您的負載平衡器是否與整合 AWS WAF,請在中選取您的負載平衡器, AWS Management Console 然後選擇整合式服務索引標籤。

預先定義的網頁 ACL

啟用 AWS WAF 整合時,您可以選擇使用預先定義的規則自動建立新 Web ACL。預先定義的 Web ACL 包含三種 AWS 受管規則,可提供針對最常見安全威脅的保護。

啟用 AWS WAF 使用控制台
  1. 前往 https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

  2. 在導覽窗格上選擇 Load Balancers (負載平衡器)

  3. 選取負載平衡器。

  4. 合索引標籤上,展開 AWS Web 應用程式防火牆 (WAF),然後選擇關聯 WAF Web ACL。

  5. 在「Web ACL」下,選擇「自動建立預先定義的 Web ACL」,或選取現有的 Web ACL。

  6. 在「規則動作」下,選擇「封鎖」或「計數」。

  7. 選擇確認

若要啟用 AWS WAF 失敗開啟,請使用 AWS CLI

使用 modify-load-balancer-attributes 命令,同時將 waf.fail_open.enabled 屬性設為 true