nginx http2协议:

http2协议仅在https监听上支持,不支持明文http2 http2 cleartext。

当前http2只启用在客户端到waf之间的链路,waf到后端服务器之间的连接依然是http1.x

http2的请求会统计到监听/实例的qps中,与http1.x的qps请求统一计数。

在http2链路中所有后端发给waf的回应,根据协议要求,会将head中所有字段的名称改为小写字母,如Content-Type会被改写为content-type。

 

单个连接支持的最大并发stream数为128   

            

http2的连接超时时间为180秒

 

启用http2协议:

客户端在建立tls连接的 Client Hello 握手,通过alpn扩展列出了自己支持的各种应用层协议,HTTP/2 协议名称是 h2。

负载均衡https监听会侦测客户端发起的握手报文ClientHello中的alpn字段,进行协议版本的协商。

若客户端ClientHello报文中没有携带alpn字段,则按照http1.x的请求逻辑来处理,反之按照http2的请求逻辑处理。

 

浏览器

服务器

协商结果

不支持http2

不支持http2

不协商使用http1.1

不支持http2

支持http2

不协商使用http1.1

支持http2

不支持http2

协商使用http1.1

支持http2

支持http2

协商使用http1.1

 

配置格式,在listen命令后加http2参数,如下所示:

server {
    listen 10.10.10.10:443 backlog=20480 http2 ssl;
	ssl_async on;
}

 

如定义idle timeout以及max streams不支持server级别定义,可将这两个参数放在http配置块内

http2_idle_timeout 3m;
http2_max_concurrent_streams 128;

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐