编译安装nginx的ngx-brotli模块

编译安装nginx的ngx-brotli模块

测试环境

  • centos 7.9 64
  • Nginx 1.24.0

先通过有网虚拟机下载后,上传到内网虚拟机

什么是 Brotli

我们控制使用压缩的资源,除了有 Gzip 外,还有 br,而这个 br 就是我这里要说的 Brotli

如有些大厂已经支持,可通过浏览器开发者模式查看响应头

Accept-Encoding:gzip,deflate,br

表示支持采用 gzip、deflate 或 br 压缩过的资源

浏览器支持情况

  • Mozilla Firefox 在 Firefox 44 中实现 Brotli。
  • Google Chrome 从 Chrome 49 开始支持 Brotli。
  • Opera 从 Opera 36 开始支持 Brotli。

安装与配置过程

下载 ngx_brotli 模块

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

# 此步骤是我需要部署内网机器,无需内网部署可省略
cd /usr/local/src/
zip -r ngx_brotli.zip ngx_brotli

下载nginx源码包

此步骤省略,自行官网下载,此次使用是1.24.0版本

因为我们是编译安装 nginx 来定制自己的模块,所以需要安装缺少的依赖包,已经存在可忽略此步骤。

yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel

安装brotli brotli-devel依赖

此步骤必须执行,不然编译nginx 添加ngx_brotli模块过程存在报错

yum -y install brotli brotli-devel

重新编译Nginx

# 如已存在源码可省略
tar -xf nginx-1.24.0.tar.gz
cd nginx-1.24.0

# 查看原来配置,将原配置复制后,加上新增2个配置,一起执行(查看现有编译参数,这点很重要)
/AppHome/nginx/sbin/nginx -V

# 编译
./configure --prefix=/AppHome/nginx  --with-http_ssl_module --with-http_gzip_static_module --add-module=/usr/local/src/ngx_brotli

make -j4

执行后,无报错信息,查看是否生效
[root@localhost objs]# /usr/local/src/nginx-1.24.0/objs/nginx -V
nginx version: nginx/1.24.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/AppHome/nginx --with-http_ssl_module --with-http_gzip_static_module --add-module=/usr/local/src/ngx_brotli

#移动旧版本
mv /AppHome/nginx/sbin/nginx /AppHome/nginx/sbin/nginx.old 
#复制新版本nginx过去
mv /usr/local/src/nginx-1.24.0/objs/nginx /AppHome/nginx/sbin/nginx 

配置nginx开启Brotli

Nginx 的全局配置文件,在合适的位置插入下面代码

# 开启gzip
gzip on;
gzip_http_version 1.1;
gzip_static on;
gzip_min_length 1;
gzip_comp_level 4;
gzip_vary on;
gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;

#启用brotli压缩
# 可以与gzip共存不会冲突
brotli on;
brotli_comp_level 6;
brotli_static on;
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;
brotli_types application/atom+xml application/javascript application/json application/vnd.api+json application/rss+xml application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype application/x-font-ttf application/x-javascript application/xhtml+xml application/xml font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;


重启nginx配置验证是否成功

./nginx -t && ./nginx -s reload

image-20240208091952741

Brotli与GZIP可以同时共存,当同时开启两种压缩算法时,Brotli 压缩等级优先级高于 Gzip如果浏览器不支持brotli会用gzip方式压缩

至此结束

参考

1.https://github.com/google/ngx_brotli

2.https://zhuanlan.zhihu.com/p/664940394

3.https://juejin.cn/post/7060352308718075935

评论

  1. Macintosh Chrome 121.0.0.0
    11 月前
    2024-2-09 18:40:50

    你也放假这么晚吗

    • 博主
      关关
      Windows Edge 118.0.2088.76
      11 月前
      2024-2-10 23:53:26

      是呀~新年快乐!龙年大吉吧

发送评论 编辑评论


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