升级到了TLS 1.3并开启了Brotli压缩

趁着周末有时间,折腾了下服务器,将原来用的TLSv1.2升级到了TLSv1.3,并折腾了下开启了Brotli压缩,这里做个记录,以备后面查阅,虽然我也不知道对于性能什么的有什么提升,但是人生重在折腾不是。

根据Nginx的发行日志,其实自从Nginx 1.13版本开始已经支持TLSv3了,所以如果只是想要使用TLSv1.3的,直接使用官方源的Nginx就好了,但是我因为还有别的需求,所以自行编译并重新打包了一下Nginx,折腾过程在这里:Debian系统添加模块并重新编译打包Nginx

之前我是使用Nginx的1.14.0版本的,因为爆出了两个安全漏洞(HTTP/2(CVE-2018-16843,CVE-2018-16844)和MP4模块(CVE-2018-16845)),官方可能升级了一个小版本,这次正好想体验一下Brotli压缩,于是趁这机会也将Nginx升级到了1.14.1,为什么不用1.15.1?服务器用的东西,我还是更喜欢稳定一点,毕竟重新编译一下Nginx也挺麻烦的。

从1.14.0升级到1.14.1,大部分配置都不需要更改,只需要添加相应的配置就行,相关部分代码:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers [TLS13+AESGCM+AES128|TLS13+AESGCM+AES256|TLS13+CHACHA20]:[EECDH+ECDSA+AESGCM+AES128|EECDH+ECDSA+CHACHA20]:EECDH+ECDSA+AESGCM+AES256:EECDH+ECDSA+AES128+SHA:EECDH+ECDSA+AES256+SHA:[EECDH+aRSA+AESGCM+AES128|EECDH+aRSA+CHACHA20]:EECDH+aRSA+AESGCM+AES256:EECDH+aRSA+AES128+SHA:EECDH+aRSA+AES256+SHA;

Brotli是一个来自Google的压缩算法,据说压缩率比gzip还好,虽然小站所在服务器有5M的带宽,但是还是想能节省点流量,毕竟是按流量算的,超出还是要钱的。至于Nginx开启Brotli,那更简单了,编译进相关模块之后,直接在Nginx配置文件添加如下几行即可:

#brotli compression
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;

添加之后,可以使用如下命令测试配置是否正确:

nginx -t

如果没问题的话,重启或者重新加载一下配置文件就行。

这是小站启用TLSv1.3之后在Google Chrome下的效果:
nginx-tls-1.3

这是启用Brotli压缩的效果,已经不是之前的gzip了:
nginx-brotli