http1.1,http2,http3和tls1.2,tls1.3在nginx中的配置对比
·
两组概念介绍
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.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|
| 监听指令 | listen 443 ssl; | listen 443 ssl;http2 on; | listen 443 quic reuseport; |
| 协议要求 | 无特殊要求 | tls1.3/tls1.2 | 需tls1.3/QUIC编译 |
| 必备头部 | 无 | 无 | Alt-Svc头部 |
| 传输层 | TCP | TCP | UDP(QUIC) |
nginx 1.25
| 特性 | HTTP/1.1 | HTTP/2 | HTTP/3 |
|---|---|---|---|
| 监听指令 | listen 443 ssl; | listen 443 ssl http2; | listen 443 quic reuseport; |
| 协议要求 | 无特殊要求 | tls1.3/tls1.2 | 需tls1.3/QUIC编译 |
| 必备头部 | 无 | 无 | Alt-Svc头部 |
| 传输层 | TCP | TCP | UDP(QUIC) |
需注意,nginx1.29和1.25,配置启用http2的方式不一样。
| TLS特性 | TLS 1.2 | TLS 1.3 |
|---|---|---|
| 协议声明 | TLSv1.2 | TLSv1.3 |
| 加密套件 | 需手动排除不安全算法 | 内置安全套件 |
| 0-RTT支持 | 不支持 | ssl_early_data on; |
| 密钥交换 | 支持RSA | 仅ECDHE |
更多推荐



所有评论(0)