HTTP/3#

启用 HTTP/3 对客户端连接的支持,以及与代理服务器的连接支持, 这些服务器使用以下 http_proxy 指令配置:

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

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

配置示例#

http {
    log_format quic '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent" "$http3"';

    access_log logs/access.log quic;

    server {
        # 为了更好的兼容性,建议
        # 对 http/3 和 https 使用相同的端口
        listen 8443 quic reuseport;
        listen 8443 ssl;

        ssl_certificate     certs/example.com.crt;
        ssl_certificate_key certs/example.com.key;

        location / {
            # 用于宣传 HTTP/3 的可用性
            add_header Alt-Svc 'h3=":8443"; ma=86400';
        }
    }
}

重要

请注意,接受通过 TLS 的 HTTP/3 连接需要 TLSv1.3 协议支持,该支持自 OpenSSL 版本 1.1.1 起可用。

指令#

http3#

语法

http3 on | off;

默认

http3 on;

上下文

http, server

启用 HTTP/3 协议协商。

http3_hq#

语法

http3_hq on | off;

默认

http3_hq off;

上下文

http, server

启用在 QUIC 互操作测试 中使用的 HTTP/0.9 协议协商。

http3_max_concurrent_streams#

语法

http3_max_concurrent_streams number;

默认

http3_max_concurrent_streams 128;

上下文

http, server

初始化 HTTP/3 和 QUIC 设置,并设置连接中并发 HTTP/3 请求流的最大数量。

http3_max_table_capacity#

语法

http3_max_table_capacity number;

默认

http3_max_table_capacity 4096;

上下文

http, server

设置服务器连接的 动态表 <https://www.ietf.org/archive/id/draft-ietf-quic-qpack-20.html#name-dynamic-table> 容量。

备注

类似的 proxy_http3_max_table_capacity 指令 对代理连接执行此操作。 为避免错误, 当启用带缓存的代理时,禁用动态表的使用。

http3_stream_buffer_size#

语法

http3_stream_buffer_size size;

默认

http3_stream_buffer_size 64k;

上下文

http, server

设置用于读取和写入 QUIC 流的缓冲区大小。

quic_active_connection_id_limit#

语法

quic_active_connection_id_limit number;

默认

quic_active_connection_id_limit 2;

上下文

http, server

设置 QUIC active_connection_id_limit 传输参数的值。这是可以存储在服务器上的最大客户端连接 ID 数量。

quic_bpf#

语法

quic_bpf on | off;

默认

quic_bpf off;

上下文

main

启用使用 eBPF 路由 QUIC 数据包。当启用时,这允许支持 QUIC 连接迁移。

重要

该指令仅在 Linux 5.7+ 上受支持。

quic_gso#

语法

quic_gso on | off;

默认

quic_gso off;

上下文

http, server

启用使用分段卸载的优化批量模式发送。

重要

优化发送仅在支持 UDP_SEGMENT 的 Linux 上受支持。

quic_host_key#

语法

quic_host_key file;

默认

上下文

http, server

设置用于加密无状态重置和地址验证令牌的秘密密钥的 file。默认情况下,每次重载时生成一个随机密钥。使用旧密钥生成的令牌将不被接受。

quic_retry#

语法

quic_retry on | off;

默认

quic_retry off;

上下文

http, server

启用 QUIC 地址验证 功能。这包括在 Retry 数据包或 NEW_TOKEN 帧中发送新令牌,并验证在 Initial 数据包中接收到的令牌。

内置变量#

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

$http3#

协商的协议标识符:

h3

用于 HTTP/3 连接

hq

用于 hq 连接

""

否则为空字符串

$quic_connection#

QUIC 连接序列号