HTTP/3#
启用 HTTP/3 对客户端连接的支持,以及与代理服务器的连接支持, 这些服务器使用以下 http_proxy 指令配置:
当 从源代码构建 时,
此模块默认不构建;
应通过
‑‑with‑http_v3_module
构建选项 启用。
在来自 我们仓库 的软件包和镜像中,
该模块已包含在构建中。 重要 请注意,接受通过 TLS 的 HTTP/3 连接需要 TLSv1.3 协议支持,该支持自 OpenSSL 版本 1.1.1 起可用。 启用 HTTP/3 协议协商。 启用在 QUIC 互操作测试 中使用的 HTTP/0.9 协议协商。 初始化 HTTP/3 和 QUIC 设置,并设置连接中并发 HTTP/3 请求流的最大数量。 设置服务器连接的 动态表
<https://www.ietf.org/archive/id/draft-ietf-quic-qpack-20.html#name-dynamic-table>
容量。 备注 类似的 proxy_http3_max_table_capacity 指令
对代理连接执行此操作。
为避免错误,
当启用带缓存的代理时,禁用动态表的使用。 设置用于读取和写入 QUIC 流的缓冲区大小。 设置 QUIC active_connection_id_limit 传输参数的值。这是可以存储在服务器上的最大客户端连接 ID 数量。 启用使用 eBPF 路由 QUIC 数据包。当启用时,这允许支持 QUIC 连接迁移。 重要 该指令仅在 Linux 5.7+ 上受支持。 启用使用分段卸载的优化批量模式发送。 重要 优化发送仅在支持 UDP_SEGMENT 的 Linux 上受支持。 设置用于加密无状态重置和地址验证令牌的秘密密钥的 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';
}
}
}
指令#
http3#
http3_hq#
http3_max_concurrent_streams#
http3_max_table_capacity#
http3_stream_buffer_size#
quic_active_connection_id_limit#
quic_bpf#
quic_gso#
quic_host_key#
quic_retry#
内置变量#
$http3
#h3
hq
""
$quic_connection
#