安装依赖
1 |
apt install dpkg-dev curl gnupg2 build-essential zlib1g-dev libpcre3 libpcre3-dev unzip cmake -y |
下载编译源码
添加nginx源码库
添加 Nginx 密钥:
1
curl -L https://nginx.org/keys/nginx_signing.key | apt-key add -
添加密钥后,使用以下命令添加 Nginx 存储库:
1
vim /etc/apt/sources.list.d/nginx.list
添加如下内容
1
2deb http://nginx.org/packages/ubuntu/ focal nginx
deb-src http://nginx.org/packages/ubuntu/ focal nginx更新存储库
1
apt update -y
下载nginx Brotli 源文件
目录文件最好保持一致,在后续编译配置文件修改部分需要文件路径正确
1
2cd /usr/local/src
apt source nginx安装编译nginx所需要的文件
1
apt build-dep nginx -y
从github下载 Brotli 源代码:
1
git clone --recursive https://github.com/google/ngx_brotli.git
修改编译配置文件
修改Nginx 源并编辑 debian 规则文件添加 Brotli模块 :
1
2cd /usr/local/src/nginx-*/
vim debian/rules添加位置不同位置可能有些许不同,这里需要注意模块路径,也就是github下载 Brotli 源代码存储路径,如果位置不对需要自行修改
1.26.1版本
1.22.1版本
其他版本添加位置也可能会有不同
1
--add-module=/usr/local/src/ngx_brotli
编译文件
使用以下命令编译并构建具有 ngx_brotli 支持的 nginx 包:
1
dpkg-buildpackage -b -uc -us
在编译时如果出现以下报错:
1
2
3
4
5
6
7
8
9/usr/bin/ld: cannot find -lbrotlienc
/usr/bin/ld: cannot find -lbrotlicommon
collect2: error: ld returned 1 exit status
make[2]: *** [objs/Makefile:383: objs/nginx] Error 1
make[2]: Leaving directory '/usr/local/src/nginx-1.26.1/debian/build-nginx'
make[1]: *** [Makefile:10: build] Error 2
make[1]: Leaving directory '/usr/local/src/nginx-1.26.1/debian/build-nginx'
make: *** [debian/rules:62: build-arch.nginx] Error 2
dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2只需要编译编译一下brotli子模块即可
1
2
3
4
5cd /usr/local/src/ngx_brotli/deps/brotli
mkdir out
cd out
cmake -DCMAKE_BUILD_TYPE=Release ..
makebrotli子模块编译完成后再执行编译命令
1
2
3cd /usr/local/src/nginx-*
dpkg-buildpackage -b -uc -us
若没有新的报错出现,在/usr/local/src
就有可安装的deb软件包
安装 Nginx 并启用 Brotli 支持
安装软件包
1
2cd /usr/local/src/
dpkg -i *.deb若软件无法安装,出现如下报错
新nginx和原有的冲突,现在安装的nginx再重新安装即可
1
2apt remove nginx
apt --fix-broken install启用Brotli
安装所有软件包后,编辑 Nginx 主配置文件并启用 Brotli 支持:
1
vim /etc/nginx/nginx.conf
在 http{ 下面添加以下行
1
2
3
4brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/vnd.microsoft.icon image/bmp image/svg+xml;重新启动 Nginx 服务:
1
systemctl restart nginx
验证 Nginx 和 Brotli
1 |
curl -H 'Accept-Encoding: br' -I http://localhost |
如果一切正常,您将看到 brotli 支持的结果“content-encoding:br”,如下所示:
禁用nginx更新
将 nginx 标记为保持:
1 |
sudo apt-mark hold nginx |
查看所有被标记为“保持”的包:
1 |
apt-mark showhold |
取消“保持”状态,允许更新:
1 |
sudo apt-mark unhold nginx |
暂无评论