模块 ngx_http_v3_module

已知问题
示例配置
指令
     http3
     http3_hq
     http3_max_concurrent_streams
     http3_stream_buffer_size
     quic_active_connection_id_limit
     quic_bpf
     quic_gso
     quic_host_key
     quic_retry
嵌入变量

ngx_http_v3_module 模块 (1.25.0) 提供了对 HTTP/3 的实验性支持。

此模块默认情况下未构建,应使用 --with-http_v3_module 配置参数启用。

建议使用提供 QUIC 支持的 SSL 库,例如 BoringSSLLibreSSLQuicTLS 来构建和运行此模块。否则,当使用 OpenSSL 库时,将使用不支持 早期数据 的 OpenSSL 兼容性层。

已知问题

该模块处于实验阶段,买者自负。

示例配置

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 {
        # for better compatibility it's recommended
        # to use the same port for http/3 and https
        listen 8443 quic reuseport;
        listen 8443 ssl;

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

        location / {
            # used to advertise the availability of HTTP/3
            add_header Alt-Svc 'h3=":8443"; ma=86400';
        }
    }
}

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

指令

语法 http3 on | off;
默认值
http3 on;
上下文 httpserver

启用 HTTP/3 协议协商。

语法 http3_hq on | off;
默认值
http3_hq off;
上下文 httpserver

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

语法 http3_max_concurrent_streams 数字;
默认值
http3_max_concurrent_streams 128;
上下文 httpserver

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

语法 http3_stream_buffer_size 大小;
默认值
http3_stream_buffer_size 64k;
上下文 httpserver

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

语法 quic_active_connection_id_limit 数字;
默认值
quic_active_connection_id_limit 2;
上下文 httpserver

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

语法 quic_bpf on | off;
默认值
quic_bpf off;
上下文 主要

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

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

语法 quic_gso on | off;
默认值
quic_gso off;
上下文 httpserver

启用使用分段卸载以优化批处理模式发送。

优化发送仅在具有 UDP_SEGMENT 功能的 Linux 上受支持。

语法 quic_host_key 文件;
默认值
上下文 httpserver

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

语法 quic_retry on | off;
默认值
quic_retry off;
上下文 httpserver

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

嵌入变量

ngx_http_v3_module 模块支持以下嵌入变量

$http3
协商的协议标识符:HTTP/3 连接为“h3”、hq 连接为“hq”,否则为空字符串。