HTTP/2#

提供对`HTTP/2 <https://datatracker.ietf.org/doc/html/rfc9113>`_的支持。

从源代码构建 时, 此模块默认不构建; 应通过 ‑‑with‑http_v2_module 构建选项 启用。

在来自 我们仓库 的包和镜像中, 该模块包含在构建中。

配置示例#

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”,则 ciphers 应配置为符合 RFC 9113, 附录A 黑名单并被客户端支持。

指令#

http2#

Added in version 1.2.0.

语法

http2 on | off;

默认

http2 off;

上下文

http, server

启用`HTTP/2 <https://datatracker.ietf.org/doc/html/rfc9113>`__协议。

http2_body_preread_size#

语法

http2_body_preread_size size;

默认

上下文

http, server

设置每个请求的缓冲区大小,在请求体开始处理前可以存储请求体。

http2_chunk_size#

语法

http2_chunk_size size;

默认

http2_chunk_size 8k;

上下文

http, server, location

设置响应体切片的最大块大小。过低的值会导致更高的开销。过高的值会因`HOL阻塞 <http://en.wikipedia.org/wiki/Head-of-line_blocking>`_而降低优先级。

http2_max_concurrent_pushes#

自 1.2.0 版本弃用.

语法

http2_max_concurrent_pushes number;

默认

http2_max_concurrent_pushes 10;

上下文

http, server

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

http2_max_concurrent_streams#

语法

http2_max_concurrent_streams number;

默认

http2_max_concurrent_streams 128;

上下文

http, server

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

http2_push#

自 1.2.0 版本弃用.

语法

http2_push uri | off;

默认

http2_push off;

上下文

http, server, location

主动发送(推送)请求到指定的uri,并与原始请求的响应一起发送。只有具有绝对路径的相对URI将被处理,例如:

http2_push /static/css/main.css;

uri 值可以包含变量。

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

http2_push_preload#

自 1.2.0 版本弃用.

语法

http2_push_preload on | off;

默认

http2_push_preload off;

上下文

http, server, location

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

http2_recv_buffer_size#

语法

http2_recv_buffer_size size;

默认

http2_recv_buffer_size 256k;

上下文

http

设置每个 worker 输入缓冲区的大小。

内置变量#

http_v2 模块支持以下内置变量:

$http2#

协商的协议标识符:

h2

用于TLS上的HTTP/2

h2c

用于明文TCP上的HTTP/2

""

否则为空字符串