CentOS 8 使用动态模块方式安装并加载 Nginx 模组 ngx_brotli 然后启用 brotli 压缩
2021/11/12 7:10:05
本文主要是介绍CentOS 8 使用动态模块方式安装并加载 Nginx 模组 ngx_brotli 然后启用 brotli 压缩,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
项目地址:Github 仓库地址
ngx_brotli
Brotli是一种通用无损压缩算法,它结合了LZ77算法的现代变体、Huffman编码和二阶上下文建模来压缩数据,其压缩比可与目前可用的最佳通用压缩方法相媲美。 它在速度上与 deflate 相似,但提供了更高的压缩率。
注意:该压缩编码仅可用于 https 通信。
ngx_brotli 包含两个模块:
ngx_brotli filter module
- 用于动态压缩响应体。ngx_brotli static module
- 用于使用预压缩的 .br 文件进行服务(静态站点)。
安装方法
获取 ngx_brotli
- 确保你安装了 git,如果没有,使用命令安装:
$ yum -y install git
- 从仓库获取
ngx_brotli
$ git clone https://github.com/google/ngx_brotli.git
如果服务器位于国内,建议使用镜像:
$ git clone https://gitee.com/xlsw/ngx_brotli.git
- 初始化子模块
$ cd ngx_brotli $ git submodule update --init $ cd ~
获取 Nginx 源码
- 如果你已经安装了 Nginx,请查看版本:
$ nginx -v
本示例已安装 nginx 版本为:
nginx version: nginx/1.20.1
- 获取并解压 Nginx 源码(将字符
x
替换为你的 Nginx 版本号,如未安装可自定义)
$ wget https://nginx.org/download/nginx-1.x.x.tar.gz && tar zxvf nginx-1.x.x.tar.gz
本示例版本为 1.20.1,则命令为:
$ wget https://nginx.org/download/nginx-1.20.1.tar.gz && tar zxvf nginx-1.20.1.tar.gz
- 清除垃圾文件
$ rm nginx-1.20.1.tar.gz
安装
以下两种方式选择一种即可,已通过 yum 源安装 Nginx 建议选择第一种 动态模块加载
动态模块加载
- 安装编译所需环境
$ yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel
- 进入 Nginx 源码目录并编译子模块
官方文档说明为:
$ cd nginx-1.x.x $ ./configure --with-compat --add-dynamic-module=/路径/ngx_brotli $ make modules
本示例则使用(ngx_brotli
已克隆到本地~
目录下):
$ cd ~/nginx-1.20.1 $ ./configure --with-compat --add-dynamic-module=../ngx_brotli $ make modules
- 将生成的 .so 动态库移动到 Nginx 的 modules 目录(默认为
/etc/nginx/modules
)
$ cp objs/*.so /etc/nginx/modules
- 为 .so 动态库文件添加权限
$ chmod 644 /etc/nginx/modules/*.so
- 向
nginx.conf
中添加配置(添加至 http 块之上)
load_module modules/ngx_http_brotli_filter_module.so; load_module modules/ngx_http_brotli_static_module.so;
模块静态编译并安装
将第一行中的字符x
替换为你上文中获取的 Nginx 源码版本号
$ cd nginx-1.x.x $ ./configure --add-module=/path/to/ngx_brotli $ make && make install
该操作将会直接将ngx_brotli
编译并直接安装到 Nginx 中
配置项
brotli_static
- 语法:
brotli_static on|off|always
- 默认值:
off
- 上下文:
http
,server
,location
启用或禁用自动检查是否有.br
预压缩文件是否存在,然后再使用;如果值为always
则不会检查而直接使用预压缩文件。
brotli
- 语法:
brotli on|off
- 默认值:
off
- 上下文:
http
,server
,location
,if
启用或禁用动态压缩响应体。
brotli_types
- 语法:
brotli_types <mime 类型> [..]
- 默认值:
text/html
- 上下文:
http
,server
,location
除了text/html
外,还支持对特定的MIME类型进行动态压缩。特殊值*
会匹配所有MIME类型,Content-Type
为text/html
的响应体将总是被压缩。
brotli_buffers
- 语法:
brotli_buffers <number> <size>
- 默认值:
32 4k|16 8k
- 上下文:
http
,server
,location
已被弃用,忽略该条配置项。
brotli_comp_level
- 语法:
brotli_comp_level <级别>
- 默认值:
6
- 上下文:
http
,server
,location
设置 Brotli 动态压缩质量级别
,取值范围从0
至11
。取值越大但性能损耗越高,压缩比越高,建议默认。
brotli_window
- 语法:
brotli_window <大小>
- 默认值:
512k
- 上下文:
http
,server
,location
设置 Brotli 窗口大小
,取值为1k
, 2k
, 4k
, 8k
, 16k
, 32k
, 64k
, 128k
, 256k
, 512k
, 1m
, 2m
, 4m
, 8m
和16m
。Gzip 压缩使用固定大小的32k
窗口,这意味着 Brotli 窗口最多可以比 deflate 窗口大 512 倍。这种差异在 Web 服务器上下文中几乎无关紧要,因为大于 32KB 的文本文件是少数。
brotli_min_length
- 语法:
brotli_min_length <长度>
- 默认值:
20
- 上下文:
http
,server
,location
设置启用 Brotli 压缩的响应体最小长度
,该值只会根据响应头中的Content-Length
字段进行判断。
变量
$brotli_ratio
:实现压缩比,原始响应大小和压缩响应大小之间的比率计算结果。
示例配置
brotli on; brotli_comp_level 6; brotli_static on; brotli_types application/atom+xml application/javascript application/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;
这篇关于CentOS 8 使用动态模块方式安装并加载 Nginx 模组 ngx_brotli 然后启用 brotli 压缩的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-13用Nginx防范DDoS攻击的那些事儿
- 2024-12-13用Terraform在AWS上搭建简单NGINX服务器指南
- 2024-10-29Nginx发布学习:从入门到实践的简单教程
- 2024-10-28Nginx发布:新手入门教程
- 2024-10-21nginx 怎么设置文件上传最大20M限制-icode9专业技术文章分享
- 2024-10-17关闭 nginx的命令是什么?-icode9专业技术文章分享
- 2024-09-17Nginx实用篇:实现负载均衡、限流与动静分离
- 2024-08-21宝塔nginx新增8022端口方法步骤-icode9专业技术文章分享
- 2024-08-21nginx配置,让ws升级为wss访问的方法步骤-icode9专业技术文章分享
- 2024-08-15nginx ws代理配置方法步骤-icode9专业技术文章分享