## 監聽器
```
{
"name": "...",
"address": "...",
"filters": [],
"ssl_context": "{...}",
"bind_to_port": "...",
"use_proxy_proto": "...",
"use_original_dst": "...",
"per_connection_buffer_limit_bytes": "...",
"drain_type": "..."
}
```
- **name**<br />
(optional, string) 這個已知監聽器的唯一名稱。如果沒有提供名稱,Envoy將為監聽器分配一個內部UUID。如果要通過LDS動態更新或刪除監聽器,則必須提供唯一的名稱。默認情況下,監聽器名稱的最大長度限制為60個字符。通過`--max-obj-name-len`命令行參數可以設置為所需的值,可以提高此限制。
- **address**<br />
(required, string) 監聽器所監聽的地址。目前僅支持監聽TCP,例如“tcp://127.0.0.1:80”。請注意,“tcp://0.0.0.0:80”是匹配任何帶有端口80的IPv4地址的通配符。
- **filters**<br />
(required, array) 監聽器連接時需要處理的過濾器鏈,包含各個網絡過濾器的列表。當發生連接事件時,將按順序處理過濾器鏈。
注意:如果過濾器列表為空,則默認關閉連接。
- **ssl_context**<br />
(optional, object) 監聽器的TLS上下文配置。如果沒有定義TLS上下文,則監聽器是純文本監聽器。
- **bind_to_port**<br />
(optional, boolean) 是否將監聽器綁定到相應的端口。不綁定的監聽器只能接收其他監聽器重定向的連接,將`use_original_dst`參數設置為true。默認是true。
- **use_proxy_proto**<br />
(optional, boolean) 監聽器是否應該在新連接上使用PROXY協議V1頭。如果啟用此選項,則監聽器將假定該連接的遠程地址是在頭部中指定的地址。包括`AWS ELB`的一些負載平衡器,也支持此選項。如果該選項不存在或設置為false,Envoy將使用連接的物理對等地址作為遠程地址。
- **use_original_dst**<br />
(optional, boolean) 如果使用iptables重定向連接,則代理接收連接的端口可能與原始目標地址不同。當此標志設置為true時,監聽器將重定向的連接切換到與原始目標地址關聯的監聽器。如果沒有與原始目標地址關聯的監聽器,則連接由接收該監聽器的監聽器處理。默認為false。
- **per_connection_buffer_limit_bytes**<br />
(optional, integer) 監聽器的新連接讀取和寫入緩沖區大小的軟限制。如果未指定,則應用實現定義的默認值(1MB)。
- **drain_type**<br />
(optional, string) 監聽器所做的逐出期間的類型。允許的值包括`default`和`modify_only`。有關更多信息,請參閱逐出[架構概述](../Introduction/Architectureoverview/Draining.md)。
### Filters
網絡過濾器[架構概述](../Introduction/Architectureoverview/NetworkL3L4filters.md)。
```
{
"name": "...",
"config": "{...}"
}
```
- **name**<br />
(required, string) 要實例化的過濾器的名稱。該名稱必須與支持的過濾器名匹配。
- **config**<br />
(required, object) 指定的過濾器配置,這取決于被實例化的過濾器。有關更多文檔,請參閱支持的[過濾器](../Configurationreference/Networkfilters.md)。
### TLS context
TLS[架構概述](../Introduction/Architectureoverview/TLS.md)。
```
{
"cert_chain_file": "...",
"private_key_file": "...",
"alpn_protocols": "...",
"alt_alpn_protocols": "...",
"ca_cert_file": "...",
"verify_certificate_hash": "...",
"verify_subject_alt_name": [],
"cipher_suites": "...",
"ecdh_curves": "...",
"session_ticket_key_paths": []
}
```
- **cert_chain_file**<br />
(required, string) 提供該監聽器使用的證書鏈文件。
- **private_key_file**<br />
(required, string) 與證書鏈文件相對應的私鑰。
- **alpn_protocols**<br />
(optional, string) 由該監聽器公開的ALPN協議列表。實際上,這可能會被設置為兩個值之一(有關更多信息,請參閱[HTTP連接管理器](../v1APIreference/Networkfilters/HTTPconnectionmanager.md#codec_type)中的codec_type參數):
- “h2,http/1.1”:如果監聽器要同時支持HTTP/2和HTTP/1.1。
- “http/1.1”:如果監聽器只支持HTTP/1.1
- **alt_alpn_protocols**<br />
(optional, string) 一個可以通過運行時切換到的ALPN協議字符串。例如在不通過部署新的配置時,禁用HTTP/2是很有用。
- **ca_cert_file**<br />
(optional, string) 包含證書頒發機構證書的文件,用于驗證客戶端提供的證書。如果未指定,而客戶端提供了證書,則不會進行驗證。默認情況下,客戶端的證書是可選的,除非還指定了其中一個附加選項(`require_client_certificate`,`verify_certificate_hash`或`verify_subject_alt_name`)。
- **require_client_certificate**<br />
(optional, boolean) 如果指定,Envoy將拒絕沒有攜帶有效證書的客戶端連接。
- **verify_certificate_hash**<br />
(optional, string) 如果指定,Envoy將驗證(pin)所提供的客戶端證書的HASH。
- **verify_subject_alt_name**<br />
(optional, array) 一組可選的標題名稱,如果指定,Envoy將驗證客戶端證書的標題ALT名稱是否與指定其中之一匹配。
- **cipher_suites**<br />
(optional, string) 如果指定,則TLS監聽器將僅支持指定的加密套件。如果未指定,則默認列表為:
```
[ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-ECDSA-CHACHA20-POLY1305]
[ECDHE-RSA-AES128-GCM-SHA256|ECDHE-RSA-CHACHA20-POLY1305]
ECDHE-ECDSA-AES128-SHA256
ECDHE-RSA-AES128-SHA256
ECDHE-ECDSA-AES128-SHA
ECDHE-RSA-AES128-SHA
AES128-GCM-SHA256
AES128-SHA256
AES128-SHA
ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-ECDSA-AES256-SHA384
ECDHE-RSA-AES256-SHA384
ECDHE-ECDSA-AES256-SHA
ECDHE-RSA-AES256-SHA
AES256-GCM-SHA384
AES256-SHA256
AES256-SHA
```
- **ecdh_curves**<br />
(optional, string) 如果指定,TLS連接將只支持指定的ECDH曲線算法。如果未指定,將使用默認曲線算法(X25519,P-256)。
- **session_ticket_key_paths**<br />
(optional, array) 用于加密和解密TLS會話憑證的密鑰文件路徑。數組中的第一個密鑰文件包含加密由此上下文創建的所有新會話的密鑰。所有的密鑰都是解密收到的憑證的備選。這允許通過例如將新的密鑰文件放在第一位,將先前的密鑰文件放在第二位,來很容易實現密鑰輪換。
如果未指定`session_ticket_key_paths`,則TLS庫仍將支持通過故障恢復會話,但會使用內部生成和管理的密鑰,因此會話不能在熱重啟或不同的主機上恢復。
每個密鑰文件必須包含正好80個字節的密碼安全隨機數據。 例如,openssl rand 80的輸出。
注意:使用此功能需要考慮存在的安全風險。即使支持完美前向保密的密碼,對密鑰的不正確處理也可能導致連接的保密性喪失。有關討論,請參閱[連接]https://www.imperialviolet.org/2013/06/27/botchingpfs.html。為了最大限度地降低風險,您必須:
- 保持會話憑證密鑰至少與TLS證書私鑰一樣安全
- 至少每天輪換會話憑證密鑰,最好每小時輪換一次
- 始終使用密碼安全的隨機數據源生成密鑰
### Listener discovery service (LDS)
```
{
"cluster": "...",
"refresh_delay_ms": "..."
}
```
- **cluster**<br />
(required, string) 承載監聽發現服務的上游群集名稱。群集必須實現LDS HTTP API的REST服務。注:這是在群集管理器配置中定義的群集名稱,而不是群集的完整定義,例如SDS和CDS的配置方式。
- **refresh_delay_ms**<br />
(optional, integer) 從LDS API獲取信息的延遲(以毫秒為單位)。Envoy將在0到`refresh_delay_ms`之間的延遲上添加一個額外的隨機抖動值。因此,最長的刷新延遲可能是`2*refresh_delay_ms`。默認值是30000ms(30秒)。
### REST API
```
GET /v1/listeners/(string: service_cluster)/(string: service_node)
```
請求發現服務返回特定`service_cluster`和`service_node`的所有監聽器。`service_cluster`對應于`--service-cluster` [CLI選項](../Operationsandadministration/Commandlineoptions.md)。`service_node`對應于`--service-node` [CLI選項](../Operationsandadministration/Commandlineoptions.md)。使用以下JSON格式響應:
```
{
"listeners": []
}
```
- **listeners**<br />
(required, array) 將在監聽器管理器中動態添加/修改的監聽器列表。管理服務器將在每個輪詢周期內,使用Envoy配置的完整監聽程序進行響應。Envoy將協調此列表與當前加載的監聽器,并根據需要添加/修改/刪除監聽器。
## 返回
- [上一級](../v1APIreference.md)
- [首頁目錄](../README.md)
- 首頁
- 簡介
- Envoy是什么
- 架構介紹
- 術語
- 線程模型
- 監聽器
- L3/L4網絡過濾器
- HTTP連接管理
- HTTP過濾器
- HTTP路由
- gRPC
- WebSocket支持
- 集群管理
- 服務發現
- 健康檢查
- 連接池
- 負載均衡
- 異常檢測
- 熔斷
- 全局限速
- TLS
- 統計
- 運行時配置
- 跟蹤
- TCP代理
- 訪問日志
- MongoDB
- DynamoDB
- Redis
- 熱重啟
- 動態配置
- 初始化
- 逐出
- 腳本
- 部署
- 業界對比
- 獲得幫助
- 歷史版本
- 編譯安裝
- 編譯
- 參考配置
- 演示沙箱
- 前端代理
- Zipkin跟蹤
- Jaeger跟蹤
- gRPC橋接
- 構建Envoy Docker鏡像
- 工具
- 配置參考
- V1 API 概述
- V2 API 概述
- 監聽器
- 網絡過濾器
- TLS客戶端身份認證
- Echo
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP連接管理器
- 路由匹配
- 流量轉移/分流
- HTTP頭部操作
- HTTP頭部清理
- 統計
- 運行時設置
- 路由發現服務
- HTTP過濾器
- 緩存
- CORS過濾器
- 故障注入
- DynamoDB
- gRPC HTTP/1.1 橋接
- gRPC-JSON 轉碼過濾器
- gRPC-Web 過濾器
- 健康檢查
- 速率限制
- 路由
- Lua
- 集群管理
- 統計
- 運行時設置
- 集群發現服務
- 健康檢查
- 熔斷
- 訪問日志
- 限速服務
- 運行時配置
- 路由表檢查工具
- 運維管理
- 命令行選項
- 熱重啟
- 管理接口
- 統計概述
- 運行時配置
- 文件系統
- 自定義擴展示例
- V1 API參考
- 監聽器
- 網絡過濾器
- TLS客戶端身份認證
- Echo
- HTTP連接管理
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP路由配置
- 虛擬主機
- 路由
- 虛擬集群
- 速率限制配置
- 路由發現服務
- HTTP過濾器
- 緩存
- CORS過濾器
- DynamoDB
- 故障注入
- gRPC HTTP/1.1 橋接
- gRPC-JSON 轉碼過濾器
- gRPC-Web 過濾器
- 健康檢查
- Lua
- 速率限制
- 路由
- 集群管理
- 集群
- 健康檢查
- 熔斷
- TLS上下文
- 異常值檢測
- HASH環負載均衡配置
- 異常檢測
- 集群發現服務
- 服務發現服務
- 訪問日志
- 管理接口
- 限速服務
- 運行時配置
- 跟蹤
- V2 API參考
- 啟動引導
- 監聽&監聽發現
- 集群&集群發現
- 服務發現
- 健康檢查
- HTTP路由管理&發現
- TLS配置
- 通用的類型
- 網絡地址
- 協議選項
- 發現API
- 限速組件
- 過濾器
- 網絡過濾器
- TLS客戶端身份認證
- HTTP連接管理
- Mongo代理
- 速率限制
- Redis代理
- TCP代理
- HTTP過濾器
- 緩存
- 故障注入
- 健康檢查
- Lua
- 速率限制
- 路由
- gRPC-JSON轉碼器
- 常見訪問日志類型
- 常見故障注入類型
- FAQ
- Envoy有多快?
- 我在哪里獲得二進制文件?
- 我如何設置SNI?
- 如何設置區域感知路由?
- 我如何設置Zipkin跟蹤?