代理协议

此监听器过滤器添加了对 HAProxy 代理协议 的支持。

在此模式下,假设下游连接来自将原始坐标(IP、端口)放入连接字符串中的代理。Envoy 然后提取这些坐标并将其用作远程地址。

在代理协议 v2 中,存在可选的扩展 (TLV) 标签的概念。如果将 TLV 的类型添加到过滤器的配置中,TLV 将作为具有用户指定键的动态元数据发出。

此实现支持版本 1 和版本 2,它在每个连接的基础上自动确定存在哪种版本。

注意

如果启用了过滤器,则连接上必须存在代理协议(版本 1 或版本 2)。该标准不允许解析以确定其是否存在。但是,可以配置过滤器以允许在没有代理协议标头的情况下接受连接(违反标准)。请参见 allow_requests_without_proxy_protocol.

如果存在协议错误或不支持的地址族(例如 AF_UNIX),连接将被关闭并抛出错误。

  • 此过滤器应使用类型 URL type.googleapis.com/envoy.extensions.filters.listener.proxy_protocol.v3.ProxyProtocol 配置。

  • v3 API 参考

统计

此过滤器发出以下一般统计信息,位于 proxy_proto.[<stat_prefix>.] 下。

名称

类型

描述

not_found_disallowed

计数器

不包含 PROXY 协议标头且被拒绝的连接总数。

not_found_allowed

计数器

不包含 PROXY 协议标头,但由于 allow_requests_without_proxy_protocol 而被允许的连接总数。

该过滤器还为每个匹配的 PROXY 协议版本发出位于 proxy_proto.[<stat_prefix>.]versions.<version> 下的统计信息。代理协议版本包括 v1v2

名称

类型

描述

found

计数器

找到并正确解析了 PROXY 协议标头的连接总数。

disallowed

计数器

由于 disallowed_versions 而被拒绝的 found 连接总数。

error

计数器

PROXY 协议标头格式错误(且连接被拒绝)的连接总数。

该过滤器还发出以下旧版统计信息,位于其自身范围内,包括 stat_prefix

名称

类型

描述

downstream_cx_proxy_proto_error

计数器

具有代理协议错误的连接总数,即 v1.errorv2.errornot_found_disallowed

注意

建议使用上面更详细的非旧版统计信息。