On this page
Module ngx_http_v2_module
ngx_http_v2_module
模块(1.9.5)提供对HTTP/2的支持,并取代ngx_http_spdy_module模块。
默认情况下未构建此模块,应使用--with-http_v2_module
配置参数启用它。
Known Issues
在 1.9.14 版之前,无论proxy_request_buffering,fastcgi_request_buffering,uwsgi_request_buffering和scgi_request_buffering指令值如何,都不能禁用客户端请求正文的缓冲。
在 1.19.1 版之前,没有使用lingering_close机制来控制关闭 HTTP/2 连接。
Example Configuration
server {
listen 443 ssl http2;
ssl_certificate server.crt;
ssl_certificate_key server.key;
}
请注意,通过 TLS 接受 HTTP/2 连接需要“应用程序层协议协商”(ALPN)TLS 扩展支持,该支持仅从OpenSSL版本 1.0.2 起可用。为此,不能保证使用“下一协议协商”(NPN)TLS 扩展(自 OpenSSL 版本 1.0.1 起可用)。
另请注意,如果ssl_prefer_server_ciphers指令设置为值“ on
”,则应将ciphers配置为符合RFC 7540,附录 A黑名单并受客户端支持。
Directives
Syntax: | http2_body_preread_size size; |
Default: | http2_body_preread_size 64k; |
Context: | http , server |
该指令出现在 1.11.0 版本中。
为每个请求设置缓冲区的size
,在开始处理请求之前可以在其中保存请求主体。
Syntax: | http2_chunk_size size; |
Default: | http2_chunk_size 8k; |
Context: | http , server , location |
设置将响应主体切成的块的最大大小。太低的值会导致更高的开销。值过高会损害HOL blocking的优先级。
Syntax: | http2_idle_timeout time; |
Default: | http2_idle_timeout 3m; |
Context: | http , server |
设置不活动的超时,然后关闭连接。
Syntax: | http2_max_concurrent_pushes number; |
Default: | http2_max_concurrent_pushes 10; |
Context: | http , server |
该指令出现在版本 1.13.9 中。
限制 Connecting 并发push请求的最大数量。
Syntax: | http2_max_concurrent_streams number; |
Default: | http2_max_concurrent_streams 128; |
Context: | http , server |
设置 Connecting 并发 HTTP/2 流的最大数量。
Syntax: | http2_max_field_size size; |
Default: | http2_max_field_size 4k; |
Context: | http , server |
限制HPACK压缩的请求 Headers 字段的最大大小。该限制对名称和值均适用。请注意,如果应用霍夫曼编码,则解压缩后的名称和值字符串的实际大小可能会更大。对于大多数请求,默认限制应该足够。
Syntax: | http2_max_header_size size; |
Default: | http2_max_header_size 16k; |
Context: | http , server |
限制HPACK解压缩后整个请求 Headers 列表的最大大小。对于大多数请求,默认限制应该足够。
Syntax: | http2_max_requests number; |
Default: | http2_max_requests 1000; |
Context: | http , server |
该指令出现在 1.11.6 版本中。
设置可以通过一个 HTTP/2 连接提供服务的最大请求数量(包括push个请求),此后下一个客户端请求将导致连接关闭以及需要构建新连接。
要释放每个连接的内存分配,必须定期关闭连接。因此,使用过多的最大请求数可能会导致过多的内存使用,因此不建议这样做。
Syntax: | http2_push uri | off; |
Default: | http2_push off; |
Context: | http , server , location |
该指令出现在版本 1.13.9 中。
抢先向指定的uri
发送(pushes)请求以及对原始请求的响应。仅处理具有绝对路径的相对 URI,例如:
http2_push /static/css/main.css;
uri
值可以包含变量。
可以在同一配置级别上指定多个http2_push
指令。 off
参数取消了从先前配置级别继承的http2_push
指令的效果。
Syntax: | http2_push_preload on | off; |
Default: | http2_push_preload off; |
Context: | http , server , location |
该指令出现在版本 1.13.9 中。
启用将“链接”响应标题字段中指定的preload links自动转换为push请求的功能。
Syntax: | http2_recv_buffer_size size; |
Default: | http2_recv_buffer_size 256k; |
Context: | http |
设置每个worker输入缓冲区的大小。
Syntax: | http2_recv_timeout time; |
Default: | http2_recv_timeout 30s; |
Context: | http , server |
设置超时,以期从客户端获取更多数据,然后关闭连接。
Embedded Variables
ngx_http_v2_module
模块支持以下嵌入式变量:
$http2
- 协商的协议标识符:“
h2
”表示 TLS 上的 HTTP/2,“h2c
”表示基于明文 TCP 的 HTTP/2,否则为空字符串。