PageSpeed + Brotli
PageSpeed
# 安装依赖
sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip uuid-dev libxslt-dev libgd-dev
# 用来放下载包的目录
cd /opt
# 下载包
wget https://github.com/apache/incubator-pagespeed-ngx/archive/v1.13.35.2-stable.zip
# 解压
unzip v1.13.35.2-stable.zip
# 进到解压目录
cd incubator-pagespeed-ngx-1.13.35.2-stable/
# 下载 psol
wget https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz
# 解压
tar zxf 1.13.35.2-x64.tar.gz
# 创建 PageSpeed 缓存目录
mkdir /var/cache/pagespeed
# 设置权限
chown -R www-data:www-data /var/cache/pagespeed
Brotli
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
git submodule update --init
编译新的 Nginx
# 查看版本装的插件,复制后面的参数
nginx -V
# 添加插件
./configure 之前复制的参数 --add-module=/opt/incubator-pagespeed-ngx-1.13.35.2-stable --add-module=/opt/ngx_brotli
make # 不要 make install
# 停止 Nginx
nginx -s stop
# 备份旧文件
mv /usr/sbin/nginx /usr/sbin/nginx.old
# 复制新文件
cp objs/nginx /usr/sbin
# 开启 Nginx
nginx
Nginx 虚拟主机配置文件添加
pagespeed on;
pagespeed FileCachePath "/var/cache/ngx_pagespeed/";
pagespeed EnableFilters collapse_whitespace;
pagespeed EnableFilters remove_comments;
pagespeed EnableFilters insert_dns_prefetch;
pagespeed EnableFilters combine_css;
pagespeed EnableFilters combine_javascript;
nginx.conf
brotli on; #启用
brotli_comp_level 6; #压缩等级,默认 6,太高的压缩水平可能需要更多的 CPU
brotli_buffers 16 8k; #请求缓冲区的数量和大小
brotli_min_length 20; #指定压缩数据的最小长度,只有大于或等于最小长度才会对其压缩。这里指定 20 字节
brotli_types *; #指定允许进行压缩类型
# brotli_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml text/html application/json image/svg application/font-woff application/vnd.ms-fontobject application/vnd.apple.mpegurl image/x-icon image/jpeg image/gif image/png image/bmp;
brotli_static always; #是否允许查找预处理好的、以 .br 结尾的压缩文件,可选值为 on、off、always
brotli_window 512k; #窗口值,默认值为 512k
测试
curl -I 网址
,有显示即为成功
Content-Encoding: br
x-page-speed:1.13.35.2-0