Brotli#
这是两个模块的集合:
ngx_brotli_filter
— 用于实时压缩响应。ngx_brotli_static
— 用于提供预压缩文件。
加载模块#
在 main{}
上下文中加载模块:
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;
动态压缩的示例配置#
server {
listen 80 default_server;
brotli on;
brotli_comp_level 1;
brotli_types text/plain text/css;
location / {
root /usr/share/angie/html;
index index.html;
try_files $uri $uri/ =404;
}
}
准备演示#
首先,让我们放置测试文件 war-and-peace.txt
:
$ ls -l /usr/share/angie/html/
total 3292
-rw-r--r-- 1 root root 497 2月 13 07:40 50x.html
-rw-r--r-- 1 root root 543 2月 13 07:40 index.html
-rw-r--r-- 1 root root 3359405 2月 26 12:47 war-and-peace.txt
$ mkdir tmp
请求压缩文件:#
$ curl -s -H 'Accept-encoding: br' -o tmp/war-and-peace.br localhost/war-and-peace.txt
$ ls -l tmp/
total 1092
-rw-r--r-- 1 asv asv 1115616 2月 26 16:52 war-and-peace.br
提供预压缩文件的示例配置#
server {
listen 80 default_server;
brotli_static on;
brotli_types text/plain text/css;
location / {
root /usr/share/angie/html;
index index.html;
try_files $uri $uri/ =404;
}
}
移动预压缩文件#
$ sudo mv tmp/war-and-peace.br /usr/share/angie/html/war-and-peace.txt.br
$ ls -l /usr/share/angie/html/
total 4384
-rw-r--r-- 1 root root 497 2月 13 07:40 50x.html
-rw-r--r-- 1 root root 543 2月 13 07:40 index.html
-rw-r--r-- 1 root root 3359405 2月 26 12:47 war-and-peace.txt
-rw-r--r-- 1 root root 1115616 2月 26 16:57 war-and-peace.txt.br
请求压缩文件:#
$ curl -s -H 'Accept-encoding: br' -o tmp/war-and-peace.br localhost/war-and-peace.txt
$ ls -l tmp/
total 1092
-rw-r--r-- 1 asv asv 1115616 2月 26 17:13 war-and-peace.br
结合动态和静态压缩#
在一个配置中,可以结合使用动态压缩
(brotli on
) 和静态选择 (brotli_static on
)。在这种情况下,系统将首先查找相应的静态压缩文件。如果未找到此类文件,则会对请求的文件进行动态压缩。
附加信息#
指令和源代码的完整文档可在以下网址找到: google/ngx_brotli.