http3-protocol

HTTP/3 是 HTTP 协议的第三个主要版本,基于 QUIC 协议。

HTTP/3 协议原理: HTTP/3 是 HTTP 协议的第三个主要版本,基于 QUIC 协议。HTTP/3 使用 QUIC 的多路复用和连接迁移特性,提供了更好的性能和可靠性。

特性

  • 基于 QUIC:HTTP/3 基于 QUIC 协议,提供了更好的性能和可靠性
  • 多路复用:HTTP/3 支持多路复用,避免 HTTP/2 的队头阻塞问题
  • 0-RTT 请求:HTTP/3 支持 0-RTT 请求,大大减少了请求延迟
  • 连接迁移:HTTP/3 支持连接迁移,客户端可以在不同网络之间切换而不中断连接
  • 内置加密:HTTP/3 内置加密,提供更强的安全性

特性原理

  1. 基于 QUIC:HTTP/3 基于 QUIC 协议,提供了更好的性能和可靠性
  2. 多路复用:HTTP/3 支持多路复用,避免 HTTP/2 的队头阻塞问题
  3. 0-RTT 请求:HTTP/3 支持 0-RTT 请求,大大减少了请求延迟
  4. 连接迁移:HTTP/3 支持连接迁移,客户端可以在不同网络之间切换而不中断连接
  5. 内置加密:HTTP/3 内置加密,提供更强的安全性

优势

  • 减少延迟:HTTP/3 支持 0-RTT 请求,大大减少了请求延迟
  • 提高吞吐量:HTTP/3 支持多路复用,提高了吞吐量
  • 更好的错误恢复:HTTP/3 支持连接迁移,提供了更好的错误恢复
  • 更安全的连接:HTTP/3 内置加密,提供了更安全的连接

优势原理

  1. 减少延迟:HTTP/3 支持 0-RTT 请求,大大减少了请求延迟
  2. 提高吞吐量:HTTP/3 支持多路复用,提高了吞吐量
  3. 更好的错误恢复:HTTP/3 支持连接迁移,提供了更好的错误恢复
  4. 更安全的连接:HTTP/3 内置加密,提供了更安全的连接

浏览器支持

浏览器支持版本
ChromeChrome 87+
FirefoxFirefox 88+
SafariSafari 14+
EdgeEdge 87+

浏览器支持说明

  • Chrome:Chrome 87+ 支持 HTTP/3
  • Firefox:Firefox 88+ 支持 HTTP/3
  • Safari:Safari 14+ 支持 HTTP/3
  • Edge:Edge 87+ 支持 HTTP/3

基本配置

http {
    server {
        listen 8443 quic reuseport;
        listen 8443 ssl http2;

        ssl_certificate     /usr/local/nginx/conf/cert/localhost.crt;
        ssl_certificate_key /usr/local/nginx/conf/cert/localhost.key;
        ssl_protocols       TLSv1.3;

        add_header Alt-Svc 'h3=":8443"; ma=86400';
    }
}

基本配置说明

  • listen 8443 quic reuseport:监听 8443 端口,启用 QUIC 协议
  • listen 8443 ssl http2:监听 8443 端口,启用 SSL 和 HTTP/2
  • ssl_certificate:指定 SSL 证书文件
  • ssl_certificate_key:指定 SSL 私钥文件
  • ssl_protocols:指定 SSL 协议版本为 TLSv1.3
  • add_header Alt-Svc:添加 Alt-Svc 响应头,通告 HTTP/3 支持

基本配置原理listen 8443 quic reuseport 指令用于监听 8443 端口,启用 QUIC 协议。reuseport 参数用于启用端口复用,提高性能。listen 8443 ssl http2 指令用于监听 8443 端口,启用 SSL 和 HTTP/2,用于兼容不支持 QUIC 的客户端。add_header Alt-Svc 指令用于添加 Alt-Svc 响应头,通告 HTTP/3 支持。

完整示例

http {
    quic_gso on;
    quic_retry on;

    server {
        listen 8443 quic reuseport;
        listen 8443 ssl http2;

        ssl_certificate     /usr/local/nginx/conf/cert/localhost.crt;
        ssl_certificate_key /usr/local/nginx/conf/cert/localhost.key;
        ssl_protocols       TLSv1.3;

        add_header Alt-Svc 'h3=":8443"; ma=86400';
    }
}

完整示例说明

  • quic_gso on:启用 GSO
  • quic_retry on:启用重试
  • listen 8443 quic reuseport:监听 8443 端口,启用 QUIC 协议
  • listen 8443 ssl http2:监听 8443 端口,启用 SSL 和 HTTP/2
  • ssl_certificate:指定 SSL 证书文件
  • ssl_certificate_key:指定 SSL 私钥文件
  • ssl_protocols:指定 SSL 协议版本为 TLSv1.3
  • add_header Alt-Svc:添加 Alt-Svc 响应头,通告 HTTP/3 支持

完整示例原理quic_gso on 指令用于启用 GSO(Generic Segmentation Offload),用于提高 QUIC 性能。quic_retry on 指令用于启用重试,用于提高 QUIC 可靠性。listen 8443 quic reuseport 指令用于监听 8443 端口,启用 QUIC 协议。reuseport 参数用于启用端口复用,提高性能。listen 8443 ssl http2 指令用于监听 8443 端口,启用 SSL 和 HTTP/2,用于兼容不支持 QUIC 的客户端。add_header Alt-Svc 指令用于添加 Alt-Svc 响应头,通告 HTTP/3 支持。

参数说明

指令说明默认值
quic_gso启用 GSOoff
quic_retry启用重试on
Alt-Svc通告 HTTP/3-

参数详解

quic_gso

说明:启用 GSO(Generic Segmentation Offload),用于提高 QUIC 性能

默认值:off

原理:GSO 是一种网络优化技术,用于提高 QUIC 性能。

quic_retry

说明:启用重试,用于提高 QUIC 可靠性

默认值:on

原理:重试机制用于提高 QUIC 可靠性,当连接失败时,会自动重试。

Alt-Svc

说明:通告 HTTP/3

默认值:-

原理:Alt-Svc 响应头用于通告 HTTP/3 支持,客户端可以根据 Alt-Svc 响应头选择使用 HTTP/3。

最佳实践

  1. 启用 HTTP/3:启用 HTTP/3,提高性能
  2. 使用 TLSv1.3:使用 TLSv1.3,提高安全性
  3. 启用早期数据:启用早期数据,减少连接建立延迟
  4. 添加 Alt-Svc 响应头:添加 Alt-Svc 响应头,通告 HTTP/3 支持
  5. 监控性能:监控性能,及时发现异常
  6. 测试配置:测试配置,确保配置正确