CentOS7 启用 Nginx HTTP3.0/QUIC、TLS1.3、Brotli 支持
HTTP 3.0,也称作 HTTP over QUIC。核心是 QUIC (读音quick)协议,由 Google 在 2015 年提出的 SPDY v3 演化而来的新协议,传统的 HTTP 协议是基于传输层 TCP 的协议,而 QUIC 是基于传输层 UDP 上的协议,可以定义成:HTTP3.0 基于 UDP 的安全可靠的 HTTP2.0 协议,提供比 TCP 和 TLS 更高的加密和性能,主要有以下特性:
- 基于 UDP 减少了 TCP 三次握手及 TLS 握手时间
- 解决多路复用丢包时的线头阻塞问题
- 优化重传策略
- 流量控制
- 连接迁移
Nginx-Quic 官方自述:https://quic.nginx.org/readme.html
安装依赖
yum install -y git openssl-devel libunwind-devel libxslt-devel gd-devel
安装GCC 10
# 安装 Software Collections 软件源
yum install -y centos-release-scl-rh centos-release-scl
# 安装 GCC 10
yum install -y devtoolset-10-gcc devtoolset-10-gcc-c++ devtoolset-10-make
# 生效临时变量
source /opt/rh/devtoolset-10/enable
源码准备
nginx-quic 源码可通过 https://hg.nginx.org/nginx-quic/shortlog/quic 站点下载
ps:2023年5月23日起,nginx 官方主线版本 1.25.0 开始正式支持 quic 协议,可自行下载 Mainline version 源码编译使用
创建源码目录
mkdir -p ~/src/ext && cd ~/src
下载 nginx-quic 源码
wget https://hg.nginx.org/nginx/archive/tip.tar.gz
tar xf tip.tar.gz
下载 ngx_brotli 源码
cd ~/src/ext
git clone https://github.com/google/ngx_brotli --recurse-submodules --dept