我想要使用 Application Load Balancer 將一個網域重新導向至另一個網域。
簡短描述
Application Load Balancer 服務支援網域名稱的重新導向,以及從 HTTP 重新導向至 HTTPS。如果您有指向 Application Load Balancer 的網域,請使用 Application Load Balancer 設定網域。
**注意事項:**最佳實踐是使用 Application Load Balancer 設定網域,而不是使用 Amazon Simple Storage Service (Amazon S3)。
解決方案
**注意事項:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請確保您使用的是最新版本 AWS CLI。
如果您使用 Application Load Balancer 作為組態的一部分,則可以使用它將一個網域重新導向到另一個網域:
- 開啟 Amazon Elastic Compute Cloud (Amazon EC2) 主控台。
- 在導覽窗格的負載平衡下,選擇負載平衡器。
- 選取負載平衡器,然後選擇接聽程式。
- 為您想要使用的負載平衡器接聽程式選擇檢視/編輯規則。
- 選擇新增規則圖示 (加號)。
- 選擇插入規則。
- 選擇新增條件。
- 在條件區段 (IF) 中,選擇新增條件。然後,完成下列步驟:
選擇主機標頭,然後輸入您的主機名稱 (例如 example.com)。
若要儲存,請選擇核取記號圖示。
- 在「動作」區段 (THEN) 中,選擇新增動作。然後,完成下列步驟:
選擇重新導向目標。
根據您的使用案例要求指定通訊協定和連接埠。
將原始主機、路徑、查詢變更為自訂主機、路徑、查詢。
對於主機,輸入 example2.com。
對於路徑和查詢,請保留預設值 (除非您的使用案例要求您變更它們)。
將回應設定為 HTTP 301「永久移動」或 HTTP 302「已找到」。
若要儲存,請選擇核取記號圖示。
立即出現 THEN 區段:
重新導向至 https://example2.com:443/#{path}?#{query}
狀態代碼: HTTP_301
- 選擇儲存。
**注意事項:**如果兩個網域都指向相同的 Application Load Balancer,請完成下列其中一項任務:
- 對兩個網域使用單獨的憑證。
- 使用主體替代名稱 (SAN) 憑證來驗證網域。
若要確認重新導向是否正常運作,請完成下列步驟:
1. 在 AWS CLI 中,使用下列 curl 函數:
curl
-Iv https://example.com -L
* Rebuilt URL to: https://example.com/
. . .
* Connected to example.com (1.2.3.4) port 443 (#0)
<SSL handshake>
> Host: example.com. ------> Host name is example.com
> User-Agent: curl/7.61.1
>
Accept: */*>
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 301 ------> ALB does redirection
< server: awselb/2.0
< date: Fri, 06 Mar 2020 09:18:33 GMT
< content-type: text/html
< content-length: 150
< location: https://example2.com:443/. ----> redirected to "example2.com"
<
* Issue another request to this URL: 'https://example2.com:443/'. ------> Curl initiates another request that is to example2.com
* Trying 34.195.219.169...
* TCP_NODELAY set
<SSL handshake>
> Host: example2.com. ------> Host name has changed to example2.com
> User-Agent: curl/7.61.1
> Accept: */*
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
<
HTTP/2 200 ----> We got a response
2. 在您的網際網路瀏覽器中,輸入 example.com 並確認它重新導向至 example2.com。
注意事項: Application Load Balancer 僅支援 301 和 302 重新導向。這些重新導向允許用戶端在後續請求中將 HTTP 方法從 POST 變更為 GET。如果需要 307 重新導向,則重新導向必須透過目標應用程式進行。
相關資訊
如何使用 Amazon S3 和 Amazon Route 53 將根網域重新導向到其子網域或任何其他網域?
Application Load Balancers 現在會使用伺服器名稱指示 (SNI) 支援具有智慧選取功能的多個 TLS 憑證