赞助商广告

在宝塔面板中安装的Nginx是不带BrotliPageSpeed模块的,要启用这两个功能我们要对Nginx进行重新编译。

开始之前

确保Nginx在宝塔中的安装方式为编译安装。

此处有个小坑:在宝塔面板中编译安装Nginx时似乎仅有1.16版本是能顺利编译的。如果在安装其他版本时发现错误,将编译时提示错误的模块在安装脚本的Install_Configure()中删除即可。

步骤

安装BROTLI

转到/www/server目录下下载Brotli模块:

cd /www/server
git clone https://github.com/google/ngx_brotli.git

查看安装的Nginx版本:

nginx -V

可见当前版本为 1.16.1

Brotli模块添加到宝塔生成的Nginx编译参数中:

编辑Nginx的安装脚本,路径为/www/server/panel/install/nginx.sh,在Install_Configure()中找到安装的Nginx版本号并在./configure之后添加--add-module=/www/server/ngx_brotli

保存后在SSH中运行脚本重新编译安装Nginx

sh /www/server/panel/install/nginx.sh install 1.16

install后根据自己的版本修改版本号

编译安装结束后再次查看Nginx的版本:

nginx -V

含有Brotli模块即安装完成

启用 BROTLI

在宝塔面板的Nginx管理中修改配置:

http段中添加内容:

brotli on;#启用
brotli_comp_level 10;#压缩等级 默认为6 最高11
brotli_min_length 512;#压缩的最小长度,仅压缩大于该长度的文件
brotli_types text/plain text/javascript text/css text/xml text/x-component application/javascript application/x-javascript application/xml application/json application/xhtml+xml application/rss+xml application/atom+xml application/x-font-ttf application/vnd.ms-fontobject image/svg+xml image/x-icon image/png font/opentype;#压缩类型
brotli_static always;#查找已预处理的压缩文件

最后保存并重载配置即可。

打开浏览器检查一下,content-encoding中有br字段即开启成功

安装PAGESPEED

同样,先转到/www/server目录并从Github下载PageSpeed模块:

cd /www/server
wget https://github.com/apache/incubator-pagespeed-ngx/archive/v1.13.35.2-stable.tar.gz

解压:

tar xzf incubator-pagespeed-ngx-1.13.35.2-stable.tar.gz

这里还需要下载一个扩展库

先进目录:

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

注意:psol的版本应和PageSpeed的版本一致

解压:

tar xzf https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz

同样,编辑Nginx的安装脚本,添加PageSpeed模块:

./configure之后添加--add-module=/www/server/incubator-pagespeed-ngx-1.13.35.2-stable

保存后在SSH中运行脚本重新编译安装Nginx

sh /www/server/panel/install/nginx.sh install 1.16

编译安装结束后再次查看Nginx的版本:

nginx -V

含有PageSpeed模块即安装完成

启用 PAGESPEED

在需要开启PageSpeed的站点中修改配置文件,添加内容:

pagespeed on;#启用
pagespeed FileCachePath /tmp/cache/ngx_pagespeed_cache1;
pagespeed RewriteLevel PassThrough;
pagespeed EnableFilters rewrite_images;
pagespeed EnableFilters local_storage_cache;
pagespeed EnableFilters lazyload_images;
pagespeed EnableFilters insert_dns_prefetch;
pagespeed EnableFilters collapse_whitespace;
pagespeed EnableFilters rewrite_javascript;
pagespeed EnableFilters outline_javascript;
pagespeed EnableFilters extend_cache;
pagespeed EnableFilters remove_comments;
pagespeed EnableFilters rewrite_css;
pagespeed EnableFilters outline_css;
pagespeed EnableFilters rewrite_style_attributes;
pagespeed EnableFilters elide_attributes;
pagespeed Disallow “/wp-admin/“;#若为Wordpress站点则添加此项
#以下内容保留
location ~ “^/ngx_pagespeed_static/“ { }
location ~ “^/ngx_pagespeed_beacon$” { }
location ~ “.pagespeed.([a-z].)?[a-z]{2}.[^.]{10}.[^.]+” { add_header “” “”; }
location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; }
location /ngx_pagespeed_message { allow 127.0.0.1; deny all; }

最后保存重载配置即可。

打开浏览器检查一下,在Elements中搜索pagespeed,有结果则开启成功:

PageSpeed的配置参数如下:

pagespeed on;
# 重置 http Vary 头
pagespeed RespectVary on;
# html字符转小写
pagespeed LowercaseHtmlNames on;
# 压缩带 Cache-Control: no-transform 标记的资源
pagespeed DisableRewriteOnNoTransform off;
# 相对URL
pagespeed PreserveUrlRelativity on;
# X-Header 值,用于判断是否生效
pagespeed XHeaderValue “Powered By VirCloud, LLC.”;
# 配置服务器缓存位置和自动清除触发条件(空间大小、时限)
pagespeed FileCachePath “/www/server/nginx/pagespeed_temp/“;
pagespeed FileCacheSizeKb 2048000;
pagespeed FileCacheCleanIntervalMs 43200000;
pagespeed FileCacheInodeLimit 500000;
# 过滤规则
pagespeed RewriteLevel PassThrough;
# 过滤 WordPress 的后台(可选配置,可参考使用)
pagespeed Disallow “/wp-admin/“;
pagespeed Disallow “/wp-login.php“;
# 移除不必要的url前缀,开启可能会导致某些自动加载功能失效
#pagespeed EnableFilters trim_urls;
# 移除 html 空白
pagespeed EnableFilters collapse_whitespace;
# 移除 html 注释
pagespeed EnableFilters remove_comments;
# DNS 预加载
pagespeed EnableFilters insert_dns_prefetch;
# 压缩CSS
pagespeed EnableFilters rewrite_css;
# 合并CSS
pagespeed EnableFilters combine_css;
# 重写CSS,优化加载渲染页面的CSS规则
pagespeed EnableFilters prioritize_critical_css;
# google字体直接写入html 目的是减少浏览器请求和DNS查询
pagespeed EnableFilters inline_google_font_css;
# 压缩js
pagespeed EnableFilters rewrite_javascript;
# 合并js
pagespeed EnableFilters combine_javascript;
# 优化内嵌样式属性
pagespeed EnableFilters rewrite_style_attributes;
# 压缩图片
pagespeed EnableFilters rewrite_images;
# 不加载显示区域以外的图片
pagespeed LazyloadImagesAfterOnload off;
# 图片预加载
pagespeed EnableFilters inline_preview_images;
# 移动端图片自适应重置
pagespeed EnableFilters resize_mobile_images;
# 图片延迟加载
pagespeed EnableFilters lazyload_images;
# 延迟加载替换图片,可以下载到本机然后替换引号里的链接
pagespeed LazyloadImagesBlankUrl “https://www.gstatic.com/psa/static/1.gif“;
# 雪碧图片,图标很多的时候很有用
pagespeed EnableFilters sprite_images;
# 扩展缓存 改善页面资源的可缓存性
pagespeed EnableFilters extend_cache;

PageSpeedBrotli同时使用,则PageSpeed应关闭对CSSJavaScript的重写与合并,否则Brotli不会生效,控制台显示为Gzip压缩