本文所用环境:
操作系统: Linux September 5.3.11-1.el7.elrepo.x86_64 GNU/Linux
内核版本: centos-release-7-7.1908.0.el7.centos.x86_64
HTTP3
目前,最新版本的 nginx (1.17.5) 仍然不能原生支持 HTTP3,好在 CloudFlare 提供了基于 Quiche 和 Boringssl 实现的一个 patch,使得我们可以在 nginx 上尝鲜一下。
开启过程如下:
下载最新版本 nginx 并打上 quiche 的 patch
1 | wget https://nginx.org/download/nginx-1.17.5.tar.gz |
安装相关依赖
- CMAKE
1 | # 前往 https://cmake.org/files/ 选择最新版本下载 |
- PERL
1 | # 前往 https://www.cpan.org/src/ 选择最新版本下载 |
- Rust
1 | # 为了支持 quiche,Rust 需要至少 1.39 版本 |
安装 nginx
在 nginx 的编译参数中加入如下模块,编译安装
1 | --with-http_ssl_module --with-http_v2_module --with-http_v3_module --with-openssl=../quiche/deps/boringssl --with-quiche=../quiche |
安装完成之后,在 nginx 的配置文件中加入如下信息,重启 nginx 即可
1 | server { |
完成之后,我们可以在这里查看配置是否成功: https://http3check.net/
TLS1.3
安装 OpenSSL
TLS1.3 需要 OpenSSL 1.1.1 以上版本,系统自带版本一般较旧,我们需要重新安装(前文所述的 quiche patch 中已经内置了 Boringssl,不需要再重新安装)
首先安装所有可能需要的依赖:
1 | yum install gc gcc gcc-c++ pcre-devel zlib-devel make wget openssl-devel libxml2-devel libxslt-devel gd-devel perl-ExtUtils-Embed GeoIP-devel gperftools gperftools-devel libatomic_ops-devel perl-ExtUtils-Embed dpkg-dev libpcrecpp0 libgd2-xpm-dev libgeoip-dev libperl-dev -y |
然后从官网 https://www.openssl.org/source/ 获取最新的 OpenSSL 下载链接,下载并解压编译安装:
1 | cd /usr/src |
完成后使用openssl version查看版本,如出现 /usr/bin/openssl: No such file or directory,可以使用如下方式解决:
1 | ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1 |
使用最新的 OpenSSL 重新编译 nginx:
1 | # 在 nginx 编译信息中加入如下参数 |
安装完成之后,修改 nginx 配置:
1 | server { |
重启 nginx,打开网站,在控制台 - Security - Overview - Connection 中可查看 TLS1.3 是否开启成功,如图所示:
Brotli
下载 Brotli:1
2
3git clone https://github.com/google/ngx_brotli
cd ngx_brotli
git submodule update --init
在 nginx 的编译参数中加入 --add-dynamic-module=/path/to/ngx_brotli
,重新编译安装 nginx,即可使 nginx 支持 brotli 压缩。
新版本的 nginx 支持动态模块,也可以只编译 brotli 模块。
安装完成后,在 nginx 配置文件中加入如下信息,重启 nginx,访问网站,应该就可以看到压缩方式为 br 了。
1 |
|
参考资料
https://www.mf8.biz/nginx-install-tls1-3/
https://zach.vip/server/%e4%bd%bf%e7%94%a8cloudflare%e7%9a%84quic%e5%ae%9e%e7%8e%b0quiche%e9%83%a8%e7%bd%b2nginx%e7%9a%84http3-quic%e5%8d%8f%e8%ae%ae/