【网站运维】如何给NGINX添加Brotli压缩
最近,本站的服务器已经正式切换为NGINX,本文旨在记录如何给NGINX添加Brotli压缩功能。

Brotli压缩介绍

2015年9月谷歌发布了Brotli压缩算法,直到现在才开始被大多数的浏览器所兼容。现在最新的HTTP服务器程序Apache和nginx也支持了Brotli压缩算法,谷歌和一些商业公司也开始对Brotli提供支持服务。和谷歌的gzip解压缩格式比起来,Brotli能在此基础上将数据在压缩20~25%。它通过一本英语、西班牙语、汉语、印地语、俄语、阿拉伯语的常用字、词汇字典,结合机器语言,特别是HTML和JavaScript的常用术语,能够将数据比gzip, bzip2, LZMA等压缩算法的基础上进一步进行压缩,减少了数据内容的容量大小,使得网页在加载时速度更快。

配置方法

准备工作

1.克隆Brotli源代码

git clone https://github.com/google/ngx_brotli.git
国内Github被墙,请使用Github镜像

执行结果如下

Cloning into 'ngx_brotli'...
remote: Enumerating objects: 206, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 206 (delta 0), reused 2 (delta 0), pack-reused 203
Receiving objects: 100% (206/206), 74.99 KiB | 0 bytes/s, done.
Resolving deltas: 100% (90/90), done.

然后进入clone目录,加入Brotli依赖项

cd ./ngx_brotli/deps && rm -rf brotli #清空原有目录
git clone https://github.com/google/brotli.git
cd ../ && git submodule update --init #刷新依赖项

执行结果如下

Cloning into 'brotli'...                                                                                                                                                                                                       
remote: Enumerating objects: 6755, done.                                                                                                                                                                                       
remote: Total 6755 (delta 0), reused 0 (delta 0), pack-reused 6755                                                                                                                                                             
Receiving objects: 100% (6755/6755), 36.07 MiB | 15.88 MiB/s, done.                                                                                                                                                            
Resolving deltas: 100% (4411/4411), done.        
Submodule 'deps/brotli' (https://github.com/google/brotli.git) registered for path 'deps/brotli'                                                                                                                               
Submodule path 'deps/brotli': checked out '#####'                                                                                                                                                                                                                                                                                                                         

2.编译源代码

首先用nginx -v命令获得当前Nginx的版本号,如图即为1.25.1

命令结果

然后,点击http://nginx.org/en/download.html链接去Nginx官网下载对应安装包

下载源码

推荐右键,复制链接后,用wget来下载,如以下命令

wget http://nginx.org/download/nginx-1.25.1.tar.gz
执行结果

解压包

tar -xvf nginx-1.25.1.tar.gz 

查看当前编译参数

根据官方文档,可以使用--with-compact来免去参数直接构建,不知为何我的服务器上执行后模块附加失败,故使用该方法编译。
nginx -V #注意大小写
执行结果

configure arguments: 后的编译选项复制下来,最后切换到刚刚解压出的Nginx目录

cd ../nginx-1.25.1/

编译

1.configure

./configure #你复制的编译选项#  --add-dynamic-module=/root/ngx_brotli #替换为刚刚克隆到的绝对路径
错误提示
checking for LuaJIT 2.x … not found
./configure: error: unsupported LuaJIT version; ngx_http_lua_module requires LuaJIT 2.x.

若出现以上错误,则按以下方法解决

export LUAJIT_INC=/usr/local/include/luajit-2.1
export LUAJIT_LIB=/usr/local/lib #临时引入lua库

运行结果

若出现上图即为configure成功

2.make

sudo make modules

等待较长的编译时间

运行结果

如上图即为完成

部署

1.拷贝

进入objs文件夹
文件夹内容

将这两个文件拷贝入Nginx目录(可以新建一个modules文件夹)

2.修改配置

nginx.conf中加入如下代码

load_module /**/nginx/modules/ngx_http_brotli_filter_module.so;
load_module /**/server/nginx/modules/ngx_http_brotli_static_module.so;

加在如图位置

再加入如下代码

# brotli
brotli on;
brotli_comp_level 6;
brotli_buffers 16 8k;
brotli_min_length 20;
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服务即可生效

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇