nginx http3
1.http3知识
HTTP/3通过一系列创新的设计和技术改进显著提升了Web性能,其加速原理可以从多个角度来理解。以下是对HTTP/3加速机制的深入解析:
1. 基于UDP而非TCP
HTTP/3选择UDP作为传输层协议,而不是传统的TCP。这一决策背后有几个关键原因:
- 减少连接建立延迟:TCP需要三次握手才能建立连接,而UDP不需要这种握手过程,因此可以立即开始数据传输。这意味着在高延迟网络环境中,HTTP/3能够更快地启动会话
- 无队头阻塞(Head-of-Line Blocking, HOLB):当使用TCP时,如果一个数据包丢失或乱序到达,所有后续的数据包都会被阻塞直到丢失的数据包被重新发送和接收。而在QUIC中,由于每个数据包都独立编号且带有自己的错误校验信息,即使某些数据包丢失也不会影响其他数据包的处理,从而减少了HOLB问题
2. 多路复用与流控制
HTTP/3不仅继承了HTTP/2的多路复用特性,而且进一步优化了它:
更高效的多路复用:虽然HTTP/2也支持多路复用,但在同一连接上的多个流共享相同的TCP拥塞控制窗口,导致一个流的阻塞会影响其他流。HTTP/3中的QUIC允许多个流独立进行,每个流都有自己的拥塞控制,因此提高了并发性和响应速度
消除流间的依赖关系:QUIC彻底解决了TCP队头阻塞问题,即使某个流的数据丢失,也不会影响其他流的传输。对于网页加载、视频播放等任务,这种机制带来了显著的性能提升
3. 更快的连接建立
HTTP/3引入了0-RTT(Zero Round Trip Time)连接恢复机制:
零握手延迟:QUIC通过合并TLS加密与连接建立过程,实现了“零握手”的初始连接速度。相比HTTP/2必须经历多次握手过程,QUIC在高延迟网络中表现尤为突出
首次连接仅需1 RTT:QUIC从请求连接到正式接发HTTP数据一共花费1 RTT,这1个RTT主要是为了获取Server Config,后面的连接如果客户端缓存了Server Config,则可以直接发送HTTP数据,实现0 RTT建立连接
4. 内置的安全性
HTTP/3将安全性深度集成到协议设计中:
- 简化安全连接:QUIC将加密机制集成到协议本身,而不是像HTTPS那样依赖于额外的应用层协议(如TLS)。这不仅简化了配置,还减少了因添加额外加密层带来的开销
- 更高的安全标准:HTTP/3采用了TLS 1.3标准,简化了加密过程,并提升了安全性。相比HTTP/2在TCP基础上额外实现TLS,HTTP/3的安全机制更为高效
5. 更好的丢包恢复
QUIC提供了先进的丢包恢复机制:
- 前向纠错(FEC):QUIC可以在应用层实现前向纠错,允许接收端根据冗余信息自行修复丢失的数据包,而不需要请求重传,从而降低了延迟
- 精确的丢失检测:QUIC能够更准确地检测哪些数据包丢失,并只重传这些数据包,而不是整个窗口的数据,进一步减少了带宽浪费
6. 连接迁移
QUIC支持跨网络无缝切换:
- 保持会话连续性:QUIC使用标识符(Connection ID)来跟踪连接,而不是依赖于IP地址和端口。这意味着当用户的网络环境发生变化(例如从Wi-Fi切换到蜂窝数据),QUIC可以保持连接不断开,提供更流畅的用户体验
7. 自适应拥塞控制
QUIC实现了更加智能的拥塞控制算法:
- 优化网络利用:QUIC能够在应用层操作改变拥塞控制方法,提供更大的灵活性来适应不同的网络条件,提高吞吐量同时避免网络拥塞
2.配置nginx http3服务(需要nginx1.25版本以上)
1.在首个server中配置
1 | server { |
2.注意:
1.非首个server 注意去掉reuseport
2.防火墙记得开放443 udp端口协议
3.检查生效
使用下面这个是跳过cdn,直接到对应服务ip检查的,可以看到是成功的
https://http3check.net/
3.关于CDN http3问题
1.关于又拍云CDN http3
quic支持,http3不支持的问题:
如果使用了cdn加速,需要对应在cdn上配置支持http3,才可以使用,但是部分cdn商家不一定支持http3,比如又拍云的(2025年1月9号),他们的技术还没升级http3
2.关于在cloudflare开启http3
网站主页-域
速度-优化-协议优化-http3启用