模块 ngx_http_v2_module

Known Issues
Example Configuration
Directives
     http2
     http2_body_preread_size
     http2_chunk_size
     http2_idle_timeout
     http2_max_concurrent_pushes
     http2_max_concurrent_streams
     http2_max_field_size
     http2_max_header_size
     http2_max_requests
     http2_push
     http2_push_preload
     http2_recv_buffer_size
     http2_recv_timeout
Embedded Variables

该模块 (1.9.5) 提供对HTTP/2ngx_http_v2_module的支持 。

该模块不是默认构建的,需要通过--with-http_v2_module 配置参数启用。

已知的问题

在版本 1.9.14 之前,无论proxy_request_bufferingfastcgi_request_bufferinguwsgi_request_bufferingscgi_request_buffering 指令值 如何,都无法禁用客户端请求正文的缓冲 。

在1.19.1版本之前,不使用 lingering_close机制来控制关闭HTTP/2连接。

配置示例

server {
    listen 443 ssl;

    http2 on;

    ssl_certificate server.crt;
    ssl_certificate_key server.key;
}

请注意,通过 TLS 接受 HTTP/2 连接需要“应用程序层协议协商”(ALPN) TLS 扩展支持,该支持自 OpenSSL版本 1.0.2 起提供。

另请注意,如果 ssl_prefer_server_ciphers指令设置为值“ on”,则密码 应配置为符合 RFC 9113、附录 A 黑名单并受客户端支持。

指令

句法: http2 on | off;
默认:
http2 off;
语境: http,server

该指令出现在版本 1.25.1 中。

启用HTTP/2 协议。

句法: http2_body_preread_size size;
默认:
http2_body_preread_size 64k;
语境: http,server

该指令出现在 1.11.0 版本中。

设置size每个请求的缓冲区,在开始处理之前可以在其中保存请求正文。

句法: http2_chunk_size size;
默认:
http2_chunk_size 8k;
语境: http, server,location

设置响应正文切片的块的最大大小。太低的值会导致更高的开销。 由于HOL 阻塞,过高的值会损害优先级 。

句法: http2_idle_timeout time;
默认:
http2_idle_timeout 3m;
语境: http,server

该指令自版本 1.19.7 起已过时。 应改用 keepalive_timeout指令。

设置不活动超时时间,超过该时间后连接将关闭。

句法: http2_max_concurrent_pushes number;
默认:
http2_max_concurrent_pushes 10;
语境: http,server

该指令出现在版本 1.13.9 中。

该指令自版本 1.25.1 起已过时。

限制连接中 并发推送请求 的最大数量 。

句法: http2_max_concurrent_streams number;
默认:
http2_max_concurrent_streams 128;
语境: http,server

设置连接中并发 HTTP/2 流的最大数量。

句法: http2_max_field_size size;
默认:
http2_max_field_size 4k;
语境: http,server

该指令自版本 1.19.7 起已过时。 应改用 large_client_header_buffers指令。

限制HPACK压缩请求标头字段 的最大大小。该限制同样适用于名称和值。请注意,如果应用霍夫曼编码,解压缩后的名称和值字符串的实际大小可能会更大。对于大多数请求,默认限制应该足够了。

句法: http2_max_header_size size;
默认:
http2_max_header_size 16k;
语境: http,server

该指令自版本 1.19.7 起已过时。 应改用 large_client_header_buffers指令。

限制HPACK解压 后整个请求头列表的最大大小 。对于大多数请求,默认限制应该足够了。

句法: http2_max_requests number;
默认:
http2_max_requests 1000;
语境: http,server

该指令出现在版本 1.11.6 中。

该指令自版本 1.19.7 起已过时。 应改用 keepalive_requests指令。

设置通过一个 HTTP/2 连接可以服务的最大请求数(包括 推送请求),之后下一个客户端请求将导致连接关闭并需要建立新连接。

定期关闭连接对于释放每个连接的内存分配是必要的。因此,使用过高的最大请求数可能会导致内存使用过多,不建议这样做。

句法: http2_push uri | off;
默认:
http2_push off;
语境: http, server,location

该指令出现在版本 1.13.9 中。

该指令自版本 1.25.1 起已过时。

先发制人地将请求 连同对原始请求的响应一起发送(推送)到指定的位置。uri仅处理具有绝对路径的相对 URI,例如:

http2_push /static/css/main.css;

uri值可以包含变量。

http2_push可以在同一配置级别上指定 多个指令。该参数取消从先前配置级别继承的指令 off的效果。http2_push

句法: http2_push_preload on | off;
默认:
http2_push_preload off;
语境: http, server,location

该指令出现在版本 1.13.9 中。

该指令自版本 1.25.1 起已过时。

启用将“Link”响应标头字段中指定的 预加载链接 自动转换 为推送 请求。

句法: http2_recv_buffer_size size;
默认:
http2_recv_buffer_size 256k;
语境: http

设置每个工作人员输入缓冲区 的大小 。

句法: http2_recv_timeout time;
默认:
http2_recv_timeout 30s;
语境: http,server

该指令自版本 1.19.7 起已过时。 应改用 client_header_timeout指令。

设置等待客户端发送更多数据的超时时间,之后连接将关闭。

嵌入变量

ngx_http_v2_module模块支持以下嵌入变量:

$http2
协商协议标识符:“ h2”表示基于 TLS 的 HTTP/2,“ h2c”表示基于明文 TCP 的 HTTP/2,否则为空字符串。