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#

Syntax

http3 on | off;

Default

http3 on;

Context

http, server

启用HTTP/3协议协商。

http3_hq#

Syntax

http3_hq on | off;

Default

http3_hq off;

Context

http, server

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

http3_max_concurrent_streams#

Syntax

http3_max_concurrent_streams number;

Default

http3_max_concurrent_streams 128;

Context

http, server

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

http3_stream_buffer_size#

Syntax

http3_stream_buffer_size size;

Default

http3_stream_buffer_size 64k;

Context

http, server

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

quic_active_connection_id_limit#

Syntax

quic_active_connection_id_limit number;

Default

quic_active_connection_id_limit 2;

Context

http, server

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

quic_bpf#

Syntax

quic_bpf on | off;

Default

quic_bpf off;

Context

main

启用使用`eBPF <https://ebpf.io/>`_的QUIC包路由。当启用时,这允许支持QUIC连接迁移。

重要

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

quic_gso#

Syntax

quic_gso on | off;

Default

quic_gso off;

Context

http, server

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

重要

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

quic_host_key#

Syntax

quic_host_key file;

Default

Context

http, server

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

quic_retry#

Syntax

quic_retry on | off;

Default

quic_retry off;

Context

http, server

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

内置变量#

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

$http3#

协商协议标识符:

h3

对于HTTP/3连接

hq

对于hq连接

""

否则为空字符串

$quic_connection#

QUIC连接序列号