在宝塔面板中安装的Nginx
是不带Brotli
与PageSpeed
模块的,要启用这两个功能我们要对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;
若PageSpeed
与Brotli
同时使用,则PageSpeed
应关闭对CSS
和JavaScript
的重写与合并,否则Brotli
不会生效,控制台显示为Gzip
压缩