Brotli是Google开发的一种现代压缩算法,比传统的Gzip压缩率更高。以下是配置Nginx支持Brotli的详细步骤:
安装Brotli库和Nginx模块
# Ubuntu/Debian
sudo apt install brotli libbrotli-dev
# CentOS/RHEL
sudo yum install brotli brotli-devel
下载并编译Nginx动态模块
wget https://github.com/google/ngx_brotli/archive/refs/heads/master.zip -O ngx_brotli.zip
unzip ngx_brotli.zip
cd ngx_brotli-master
编译动态模块
./configure --with-compat --add-dynamic-module=/path/to/ngx_brotli
make modules
将模块复制到Nginx模块目录
cp objs/ngx_http_brotli_filter_module.so /etc/nginx/modules/
cp objs/ngx_http_brotli_static_module.so /etc/nginx/modules/
下载Brotli源码
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
git submodule update --init
重新配置Nginx
./configure --add-module=/path/to/ngx_brotli [其他原有参数]
make
sudo make install
在主配置中加载模块
在nginx.conf
的顶部添加:
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;
在http或server块中添加Brotli配置
http {
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss;
# 其他配置...
}
brotli on|off
: 启用/禁用Brotli压缩brotli_comp_level
: 压缩级别(1-11),默认6brotli_types
: 指定压缩的MIME类型brotli_min_length
: 最小压缩长度,默认20字节brotli_window
: 滑动窗口大小,默认512k检查配置语法:
sudo nginx -t
重新加载Nginx:
sudo systemctl reload nginx
验证Brotli是否生效:
curl -H 'Accept-Encoding: br' -I http://yourdomain.com | grep -i content-encoding
应该返回content-encoding: br
建议同时保留Gzip作为备用:
gzip on;
gzip_vary on;
brotli on;
Brotli压缩级别高于4会显著增加CPU使用率
静态预压缩文件可以减轻服务器负担:
brotli_static on;
确保客户端支持Brotli(所有现代浏览器都支持)
通过以上步骤,您的Nginx服务器现在应该能够提供Brotli压缩内容,从而减少传输数据量并提高网站性能。