两组概念介绍

1. HTTP协议演进
  • HTTP/1.1 (1999年):

    • 特点:文本协议、串行请求(队头阻塞)、无状态、支持持久连接(Keep-Alive)
    • 不足:高延迟、头部冗余、并发能力弱
  • HTTP/2 (2015年):

    • 核心改进:
      • 二进制分帧(提升解析效率)
      • 多路复用(解决队头阻塞)
      • 头部压缩(HPACK算法)
      • 服务器推送(Server Push)
    • 仍基于TCP,存在TCP层队头阻塞
  • HTTP/3 (2022年正式标准):

    • 革命性变化:
      • 基于QUIC协议(UDP实现)
      • 内置TLS 1.3加密
      • 解决传输层队头阻塞
      • 0-RTT快速连接
      • 网络切换无感重连
2. TLS协议演进
  • TLS 1.2 (2008年):

    • 支持算法:SHA-256、AEAD加密套件
    • 密钥交换:支持RSA/ECDHE
    • 握手过程:2-RTT(完整握手)
  • TLS 1.3 (2018年):

    • 重大改进:
      • 1-RTT握手(性能提升)
      • 0-RTT早期数据(有重放风险)
      • 移除不安全算法(RC4、SHA1、RSA密钥交换等)
      • 强制前向保密(PFS)
      • 加密握手过程

Nginx配置差异详解

1. HTTP协议配置
# HTTP/1.1 (默认配置)
listen 443 ssl;

# HTTP/2 配置(需Nginx ≥ 1.9.5)
listen 443 ssl;
http2 on;

# HTTP/3 配置(需Nginx ≥ 1.25.0 + QUIC模块)
listen 443 quic reuseport;  # UDP监听
listen 443 ssl;       # TCP回退
http2 on;
add_header Alt-Svc 'h3=":443"; ma=86400';
2. TLS协议配置
# TLS 1.2 基础配置
ssl_protocols TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;

# TLS 1.3 优化配置
ssl_protocols TLSv1.2 TLSv1.3;  # 兼容旧客户端
ssl_ciphers 'TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256';
ssl_early_data on;              # 启用0-RTT
关键配置对比表

nginx 1.29

特性HTTP/1.1HTTP/2HTTP/3
监听指令listen 443 ssl;listen 443 ssl;http2 on;listen 443 quic reuseport;
协议要求无特殊要求tls1.3/tls1.2需tls1.3/QUIC编译
必备头部Alt-Svc头部
传输层TCPTCPUDP(QUIC)

nginx 1.25

特性HTTP/1.1HTTP/2HTTP/3
监听指令listen 443 ssl;listen 443 ssl http2;listen 443 quic reuseport;
协议要求无特殊要求tls1.3/tls1.2需tls1.3/QUIC编译
必备头部Alt-Svc头部
传输层TCPTCPUDP(QUIC)

需注意,nginx1.29和1.25,配置启用http2的方式不一样。

TLS特性TLS 1.2TLS 1.3
协议声明TLSv1.2TLSv1.3
加密套件需手动排除不安全算法内置安全套件
0-RTT支持不支持ssl_early_data on;
密钥交换支持RSA仅ECDHE
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐