软件源安装的Nginx如何安装brotli压缩模块

QQ截图20230506172950.png

概述

Brotli是基于LZ77算法的一个现代变体、霍夫曼编码和二阶上下文建模,由Google在2015年推出,专门针对Web资源内容进行优化

Brotli的压缩率比gzip高,根据不同的研究,Brotli可以比gzip节省14%-25%的文件大小13。这意味着Brotli可以更快地传输数据,提高网站的加载速度和用户体验。

Brotli有11个压缩级别,而gzip只有9个。Brotli还使用了一个预定义的120千字节字典,包含了超过13000个常用单词、短语和其他子字符串1。这些因素都有助于Brotli提高压缩效率。

Brotli的压缩时间会随着压缩级别的增加而增加,而gzip的压缩时间相对较稳定。这意味着Brotli需要更多的计算能力,可能会增加服务器的负载和成本13。

Brotli只能与HTTPS一起使用,而gzip可以同时支持HTTP和HTTPS。这也导致了Brotli在浏览器支持上比gzip少,目前除了IE和Opera Mini之外,其他主流浏览器都已支持Brotli。

如果你使用的是的官方包管理器安装的 nginx,可能没有预编译好的 Brotli 压缩模块。不过你可以通过以下步骤手动编译并安装 Brotli 压缩模块:

我的系统环境是debian 10
软件源安装的nginx 版本 1.22

1. 安装编译工具和依赖项

sudo apt update
sudo apt install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip git

2. 下载 Brotli 源码

git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
git submodule update --init

3. 下载 Nginx 源码

我用的是1.22版本

wget http://nginx.org/download/nginx-1.22.0.tar.gz

4. 编译 nginx 并加载 Brotli 模块

cd nginx-1.22.0
./configure --with-compat --add-dynamic-module=../ngx_brotli
make modules

我们只要他编译完成的 .so文件就可以了,所以直接用的 make modules

--with-compat 是一个 Nginx 编译选项,它允许 Nginx 模块与不同版本的 Nginx 一起编译和链接,以确保模块在不同版本的 Nginx 中的兼容性。

编译完成后在nginx 源码目录下,会有个objs目录里面就有2个.so文件了
.so文件复制到nginx的模块路径

ngx_http_brotli_filter_module.so
ngx_http_brotli_static_module.so
  • Ubuntu/Debian 系统上的 nginx 模块文件通常被安装到 /usr/lib/nginx/modules 目录下。
  • CentOS/RHEL 系统上的 nginx 模块文件通常被安装到 /usr/lib64/nginx/modules 目录下。

5.nginx 配置brotli

打开nginx配置文件

vim /etc/nginx/nginx.conf

添加以下两行

load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;

得放在pid 下面这个位置 nginx -t 配置检查才能通过。不知道为什么

20230506171334.png

开启Brotli

brotli on;
brotli_comp_level 5;
brotli_min_length 256;
brotli_types text/plain text/javascript text/css text/xml text/x-component application/javascript application/x-javascript application/xml application/json application/xhtml+xml application/rss+xml application/atom+xml application/x-font-ttf application/vnd.ms-fontobject image/svg+xml image/x-icon font/opentype image/jpeg image/png image/gif;

Gzip和Brotli可同时开启

gzip on;
gzip_min_length 1k;
gzip_comp_level 6;
gzip_vary on;
gzip_disable "MSIE [1-6]\.";
gzip_types text/plain text/javascript text/css text/xml text/x-component application/javascript application/x-javascript application/xml application/json application/xhtml+xml application/rss+xml application/atom+xml application/x-font-ttf application/vnd.ms-fontobject image/svg+xml image/x-icon font/opentype image/jpeg image/png image/gif;

建议是在测试机上编译完模块.so 文件,.so文件在拷过来网站服务器上配置,节省资源。

# nginx 

本文由:星际难民
实践,测试,整理发布.如需转载请注明地址 本文标题:软件源安装的Nginx如何安装brotli压缩模块
地址:https://530503.xyz/articles/2023/05/06/1683365578674.html

评论

取消