

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

# Classic Load Balancer 的接聽程式
<a name="elb-listener-config"></a>

開始使用 Elastic Load Balancing 之前，您必須為 Classic Load Balancer 設定一或多個*接聽程式*。接聽程式是檢查連線請求的程序。它是透過一個前端 (用戶端到負載平衡器) 連線的協定和連接埠，以及一個後端 (負載平衡器到後端執行個體) 連線的協定和連接埠進行設定。

Elastic Load Balancing 支援以下通訊協定：
+ HTTP
+ HTTPS (安全 HTTP)
+ TCP
+ SSL (安全 TCP)

HTTPS 通訊協定使用 SSL 通訊協定在 HTTP 層上建立安全連線。您也可以使用 SSL 通訊協定在 TCP 層上建立安全連線。

如果前端連線使用 TCP 或 SSL，則後端連線可以使用 TCP 或 SSL。如果前端連線使用 HTTP 或 HTTPS，則後端連線可以使用 HTTP 或 HTTPS。

後端執行個體可以在連接埠 1-65535 上監聽。

可以在以下連接埠上接聽負載平衡器：1-65535

**Topics**
+ [通訊協定](#elb-listener-protocols)
+ [HTTPS/SSL 接聽程式](#https-ssl-listeners)
+ [Classic Load Balancer 的接聽程式組態](using-elb-listenerconfig-quickref.md)
+ [HTTP 標頭和 Classic Load Balancer](x-forwarded-headers.md)

## 通訊協定
<a name="elb-listener-protocols"></a>

一般 Web 應用程式的通訊都會通過硬體和軟體層。每一層提供特定的通訊功能。通訊功能的控制權會從一個 layer 依序傳遞到下一個。Open System Interconnection (OSI) 定義在這些 layers 用於實作通訊之標準的模型架構，稱為*通訊協定*。如需詳細資訊，請參閱 Wikipedia 中的 [OSI 模型](https://en.wikipedia.org/wiki/OSI_model)。

當使用 Elastic Load Balancing 時，您需要對 Layer 4 和 Layer 7 有基本了解。Layer 4 是傳輸層，其透過負載平衡器描述用戶端和後端執行個體之間的傳輸控制通訊協定 (TCP) 的連線。第 4 層是負載平衡器是可設定的最低層級。Layer 7 是應用程式層，其描述從用戶端到負載平衡器，以及從負載平衡器到後端執行個體使用 Hypertext Transfer Protocol (HTTP) 和 HTTPS (安全 HTTP) 連線到負載平衡器。

Secure Sockets Layer (SSL) 通訊協定主要透過安全網路例如網際網路，用於加密機密資料。SSL 通訊協定會在用戶端與後端伺服器之間建立安全連線，並確保在用戶端與伺服器之間傳遞的所有資料為私有且為整數。

### TCP/SSL 通訊協定
<a name="using-elb-tcp-layer4"></a>

當您針對前端和後端連線使用 TCP (layer 4)，您的負載平衡器轉發請求到後端執行個體，無需修改標題。您的負載平衡器收到請求後，就會嘗試開啟 TCP 連接 (連到接聽程式組態中指定的連接埠上的後端執行個體)。

因為負載平衡器會攔截用戶端與後端執行個體的流量，所以後端執行個體存取日誌 (適用於包含負載平衡器的 IP 地址，而不包含來源用戶端的後端執行個體)。您可以啟用 Proxy Protocol，其新增含用戶端連線資訊的標題，例如來源 IP 地址、目的地 IP 地址和連接埠號碼。然後標頭會做為請求的一部分傳送到後端執行個體。您可以剖析請求中的第一行以擷取連線資訊。如需詳細資訊，請參閱[設定 Classic Load Balancer 的代理通訊協定](enable-proxy-protocol.md)。

使用此組態時，您不會收到工作階段黏著性或 X-Forwarded 標頭的 Cookie。

### HTTP/HTTPS 通訊協定
<a name="using-elb-http-layer7"></a>

當您將 HTTP （第 7 層） 用於前端和後端連線時，負載平衡器會先剖析請求中的標頭，再將請求傳送至後端執行個體。

對於給 HTTP/HTTPS 負載平衡器後端每個註冊和運作狀態良好的執行個體，Elastic Load Balancing 會開啟和維護一或多個 TCP 連接。這些連線可確保永遠都有建立好的連線來接收 HTTP/HTTPS 請求。

HTTP 請求和 HTTP 回應使用標頭欄位來傳送有關 HTTP 訊息的資訊。Elastic Load Balancing 支援 `X-Forwarded-For` 標頭。由於負載平衡器攔截用戶端和伺服器之間的流量，您的伺服器存取日誌僅包含負載平衡器的 IP 地址。若要查看用戶端的 IP 地址，請使用 `X-Forwarded-For` 請求標頭。如需詳細資訊，請參閱[X-Forwarded-For](x-forwarded-headers.md#x-forwarded-for)。

當使用 HTTP/HTTPS 時，您可以在負載平衡器上啟用黏性工作階段。黏性工作階段會將使用者工作階段繫結至特定的後端執行個體。這樣能確保該工作階段期間所有來自使用者的請求都能傳送到相同的後端執行個體。如需詳細資訊，請參閱[為 Classic Load Balancer 設定黏性工作階段](elb-sticky-sessions.md)。

負載平衡器並不支援所有的 HTTP 擴展。如果負載平衡器因為意外方法、回應碼或其他非標準 HTTP 1.0/1.1 實作而無法終止請求，您可能需要使用 TCP 接聽程式。

## HTTPS/SSL 接聽程式
<a name="https-ssl-listeners"></a>

您可以使用以下安全功能建立負載平衡器。

### SSL 伺服器憑證
<a name="ssl-cert"></a>

如果您將 HTTPS 或 SSL 用於前端連線，您必須在您的負載平衡器上部署 X.509 憑證 (SSL 伺服器憑證)。負載平衡器會解密用戶端的請求，再將它們傳送到後端執行個體 (稱為 *SSL 終止*)。如需詳細資訊，請參閱[Classic Load Balancer 的 SSL/TLS 憑證](ssl-server-cert.md)。

如果您不希望負載平衡器處理 SSL 終止 (稱為 *SSL 卸載*)，您可以將 TCP 用於前端和後端連線，並於註冊執行個體處理請求上部署憑證。

### SSL 溝通
<a name="using-elb-cipher-settings"></a>

Elastic Load Balancing 提供預先定義的 SSL 溝通組態，其在用戶端和負載平衡器之間建立連線時用於 SSL 溝通。SSL 溝通組態提供與廣泛的用戶端的相容性，並使用高強度加密演算法，稱為*加密*。不過，一些使用案例可能需要網路上的所有資料進行加密，並且僅允許特定加密。有些安全合規標準 (例如 PCI、SOX 等) 可能需要一組特定的用戶端通訊協定和加密式，以確保符合安全標準。在這種情況下，您可以根據您的特定需求建立自訂 SSL 溝通組態。您的加密和通訊協定應該會在 30 秒內生效。如需詳細資訊，請參閱[Classic Load Balancer 的 SSL 溝通組態](elb-ssl-security-policy.md)。

### 後端伺服器身分驗證
<a name="using-elb-backend-auth"></a>

如果您將 HTTPS 或 SSL 使用於後端連線，您可以為已註冊的後端執行個體啟用身分驗證。然後，您可以使用身分驗證程序來確保執行個體只接受加密的通訊，並確保每個註冊執行個體具有正確的公有金鑰。

如需詳細資訊，請參閱[設定後端伺服器驗證](elb-create-https-ssl-load-balancer.md#configure_backendauth_clt)。