HTTP 协议选项 (proto)
此扩展的限定名称为 envoy.upstreams.http.http_protocol_options
注意
此扩展旨在对不可信的下游流量具有鲁棒性。它假定上游是可信的。
extensions.upstreams.http.v3.HttpProtocolOptions
[extensions.upstreams.http.v3.HttpProtocolOptions proto]
HttpProtocolOptions 指定 Http 上游协议选项。此对象用于 typed_extension_protocol_options,以 envoy.extensions.upstreams.http.v3.HttpProtocolOptions
为键。
这控制应该对上游使用什么协议以及如何配置这些协议。
这取代了以前在集群中直接进行显式协议配置的模式。因此,像这样的配置,明确配置使用 HTTP/2 上游
clusters:
- name: some_service
connect_timeout: 5s
upstream_http_protocol_options:
auto_sni: true
common_http_protocol_options:
idle_timeout: 1s
http2_protocol_options:
max_concurrent_streams: 100
.... [further cluster config]
现在将看起来像这样
clusters:
- name: some_service
connect_timeout: 5s
typed_extension_protocol_options:
envoy.extensions.upstreams.http.v3.HttpProtocolOptions:
"@type": type.googleapis.com/envoy.extensions.upstreams.http.v3.HttpProtocolOptions
upstream_http_protocol_options:
auto_sni: true
common_http_protocol_options:
idle_timeout: 1s
explicit_http_config:
http2_protocol_options:
max_concurrent_streams: 100
.... [further cluster config]
{
"common_http_protocol_options": {...},
"upstream_http_protocol_options": {...},
"explicit_http_config": {...},
"use_downstream_protocol_config": {...},
"auto_config": {...},
"http_filters": []
}
- common_http_protocol_options
(config.core.v3.HttpProtocolOptions) 这包含 HTTP/1 和 HTTP/2 共有的选项
- upstream_http_protocol_options
(config.core.v3.UpstreamHttpProtocolOptions) 这包含仅在上游应用的通用协议选项。
- explicit_http_config
(extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig) 要明确配置 HTTP/1 或 HTTP/2(但不能同时配置!),请使用
explicit_http_config
。如果explicit_http_config
为空,则使用 HTTP/1.1。这控制要在上游使用的实际协议。
必须设置以下项中的一个:explicit_http_config、use_downstream_protocol_config、auto_config。
- use_downstream_protocol_config
(extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig) 这允许根据下游连接使用的协议来切换协议。
这控制要在上游使用的实际协议。
必须设置以下项中的一个:explicit_http_config、use_downstream_protocol_config、auto_config。
- auto_config
(extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig) 这允许根据 ALPN 来切换协议
这控制要在上游使用的实际协议。
必须设置以下项中的一个:explicit_http_config、use_downstream_protocol_config、auto_config。
- http_filters
- (repeated extensions.filters.network.http_connection_manager.v3.HttpFilter) .. note:
上游 HTTP 过滤器目前处于 alpha 阶段。
上游 HTTP 过滤器链的可选 HTTP 过滤器。
这些过滤器将应用于流经此集群的所有 HTTP 流。与下游 HTTP 过滤器不同,它们不会应用于终止的 CONNECT 请求。
如果使用上游 HTTP 过滤器,请注意,上游 HTTP 过滤器发送的本地错误不会触发重试,并且上游 HTTP 过滤器发送的本地错误如果配置了对冲,将被视为最终响应。
extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig
[extensions.upstreams.http.v3.HttpProtocolOptions.ExplicitHttpConfig proto]
如果使用此选项,则集群将仅在一个可能的协议上运行。请注意,HTTP/2 或更高版本通常应该用于上游 gRPC 集群。
{
"http_protocol_options": {...},
"http2_protocol_options": {...},
"http3_protocol_options": {...}
}
- http_protocol_options
(config.core.v3.Http1ProtocolOptions)
必须设置以下项中的一个:http_protocol_options、http2_protocol_options、http3_protocol_options。
- http2_protocol_options
(config.core.v3.Http2ProtocolOptions)
必须设置以下项中的一个:http_protocol_options、http2_protocol_options、http3_protocol_options。
- http3_protocol_options
- (config.core.v3.Http3ProtocolOptions) .. warning:
QUIC 上游支持目前尚未准备好用于互联网使用。有关详细信息,请参阅 此处。
必须设置以下项中的一个:http_protocol_options、http2_protocol_options、http3_protocol_options。
extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig
[extensions.upstreams.http.v3.HttpProtocolOptions.UseDownstreamHttpConfig proto]
如果使用此选项,则集群可以使用两种配置的协议,并且将使用下游连接使用的协议。
如果为下游配置了 HTTP/3,而未为上游配置,则 HTTP/3 请求将故障转移到 HTTP/2。
{
"http_protocol_options": {...},
"http2_protocol_options": {...},
"http3_protocol_options": {...}
}
- http_protocol_options
- http2_protocol_options
- http3_protocol_options
- (config.core.v3.Http3ProtocolOptions) .. warning:
QUIC 上游支持目前尚未准备好用于互联网使用。有关详细信息,请参阅 此处。
extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig
[extensions.upstreams.http.v3.HttpProtocolOptions.AutoHttpConfig proto]
如果使用此选项,则集群可以使用 HTTP/1 或 HTTP/2,并且将使用通过 ALPN 与上游协商的协议。使用 AutoHttpConfig
配置的集群将使用最高可用协议;如果支持 HTTP/2,否则使用 HTTP/1。如果上游不支持 ALPN,AutoHttpConfig
将故障转移到 HTTP/1。这只能与支持 ALPN 的传输套接字一起使用。使用不支持 ALPN 的传输套接字会导致配置失败。传输层可以使用自定义 ALPN 配置,但集群的默认 ALPN(或如果自定义 ALPN 失败)将为“h2,http/1.1”。
{
"http_protocol_options": {...},
"http2_protocol_options": {...},
"http3_protocol_options": {...},
"alternate_protocols_cache_options": {...}
}
- http_protocol_options
- http2_protocol_options
- http3_protocol_options
(config.core.v3.Http3ProtocolOptions) 与 HTTP/1 和 HTTP/2 不同,HTTP/3 不会被配置,除非它存在,并且(很快)只有在有服务器端支持的迹象时才会被配置。有关何时使用 HTTP/3 以及何时 Envoy 会故障转移到 TCP 的更多信息,请参阅 此处。
警告
QUIC 上游支持目前尚未准备好用于互联网使用。有关详细信息,请参阅 此处。
- alternate_protocols_cache_options
(config.core.v3.AlternateProtocolsCacheOptions) alternate_protocols_cache_options 的存在会导致使用 alternate_protocols_cache,它负责解析和缓存 HTTP Alt-Svc 标头。这使能够对支持 HTTP/3 的来源使用 HTTP/3。
注意
启用 HTTP/3 时需要此选项。