HTTP/3#
为客户端连接提供 HTTP/3 协议支持, 同时也支持与使用以下 Proxy 模块指令 配置的代理服务器的连接:
当 从源代码构建 时,
此模块默认不会被构建;
需要使用
‑‑with‑http_v3_module
构建选项 来启用。
在来自 我们仓库 的软件包和镜像中,
该模块已包含在构建中。 备注 请注意,通过 TLS 接受 HTTP/3 连接需要 TLSv1.3 协议支持,该协议从 OpenSSL 1.1.1 版本开始可用。 此外,:samp:reuseport 选项只能在服务器上的一个 启用 HTTP/3 协议协商。 启用在 QUIC 互操作性测试 中使用的 HTTP/0.9 协议协商。 警告 仅在运行明确需要此模式的专门测试时才启用。 初始化 HTTP/3 和 QUIC 设置,
并设置一个连接中并发 HTTP/3 请求流的最大数量。 设置服务器连接的 动态表
容量。 备注 类似的 proxy_http3_max_table_capacity 指令
用于代理连接。
为避免错误,
当启用带缓存的代理时,动态表使用会被禁用。 设置用于读取和写入 QUIC 流的缓冲区 大小。 设置 QUIC active_connection_id_limit 传输参数值。这是可以存储在服务器上的连接 ID 的最大数量。 启用使用 eBPF 路由 QUIC 数据包。启用后,可以支持 QUIC 连接迁移。 备注 该指令仅在 Linux 5.7+ 上支持。 启用使用分段卸载的优化批量发送模式。 备注 优化发送仅在支持 设置包含用于加密无状态重置和地址验证令牌的密钥的 file 文件。默认情况下,每次重新加载时都会生成一个随机密钥。使用旧密钥生成的令牌不会被接受。 启用 QUIC 地址验证 功能。这包括在 Retry 数据包或 NEW_TOKEN 帧中发送新令牌,以及验证在 Initial 数据包中收到的令牌。 http_v3 模块支持以下内置变量: 协商的协议标识符: 用于 HTTP/3 连接 用于 hq 连接 否则为空字符串 QUIC 连接序列号配置示例#
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';
}
}
}
listen ... quic 指令中指定。所有其他 listen ... quic 指令必须不带此选项。指令#
http3#
http3_hq#
http3_max_concurrent_streams#
http3_max_table_capacity#
http3_stream_buffer_size#
quic_active_connection_id_limit#
quic_bpf#
quic_gso#
UDP_SEGMENT 的 Linux 上受支持。quic_host_key#
quic_retry#
内置变量#
$http3#h3hq""$quic_connection#