宝塔官方一直没有在面板里面默认集成PageSpeed模块,大鸟估计是PageSpeed模块在国内有点水土不服,但是这并不能影响小伙伴么尝鲜。大鸟自己也憋不住给nginx编译了这个模块,发现速度提升还是很明显的。
大鸟昨天说了如何编译ngx_lua_waf web 应用防火墙模块,那么今天编译PageSpeed模块也还是一样。ngx_pagespeed 是一个非常不错的 Nginx 拓展,大鸟也就不去多介绍这玩意了,如果不懂,就自己百度去。
第一、备份nginx
你可以使用SSH工具以ROOT权限登陆之后下载备份nginx,也可以直接使用命令备份nginx。
1、查看nginx位置
ps -elf | grep nginx
2、进入宝塔面板的nginx目录
cd /www/server/nginx/sbin/
3、备份宝塔nginx
cp nginx nginx.bak
4、进入root目录
cd /root
第二、自动安装
- 安装文档
https://www.modpagespeed.com/doc/build_ngx_pagespeed_from_source - 使用谷歌给出的自动安装脚本安装!
bash <(curl -f -L -sS https://ngxpagespeed.com/install) \ --nginx-version latest
如果有选择的时候,我们需要选择Y,回车即可继续安装。大鸟的宝塔面板环境是nginx1.14.1 php7.2,貌似低版本的pagespeed安装会有错误,大鸟这里安装的是page-speed 1.13.35.2。如果我们安装新版本的不成功,可以试试低版本的( 1.13.3 降至 1.12.0)或者更低的版本。
第三、重新编译 nginx
查看当前nginx的加载所的模块,在编译加载的PageSpeed模块的时候仍需加载这些模块(下面的路径是宝塔默认的nginx的路径,其他面板请自行更改路径)
cd /www/server/nginx/src
查看宝塔编译好的nginx加载模块,在重新编译加载新模块时候仍需加载这些模块
nginx -V
注意这个命令是大写的V,如果小写v是不会显示模块的,这里会显示出所有的已经编译的模块。将./configure arguents:之后的内容复制到记事本备用。大鸟这里是:
--user=www --group=www --prefix=/www/server/nginx --with-openssl=/www/server/nginx/src/openssl --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --add-module=/www/server/nginx/src/nginx-http-concat --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-stream --with-stream_ssl_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-pcre=pcre-8.40 --with-ld-opt=-ljemalloc
第四、编译内容
./configure 上一步记事本中的备用内容 --add-module=/root/incubator-pagespeed-ngx-latest-stable
注意–add-module前面是有空格的,./configure后面也有空格。全部代码如下:
--user=www --group=www --prefix=/www/server/nginx --with-openssl=/www/server/nginx/src/openssl --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --add-module=/www/server/nginx/src/nginx-http-concat --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-stream --with-stream_ssl_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-pcre=pcre-8.40 --with-ld-opt=-ljemalloc --add-module=/root/incubator-pagespeed-ngx-latest-stable
/root/incubator-pagespeed-ngx-latest-stable,这里是编译文件放的路径,如果你是存放到别的地方,注意修改路径。我们回车,等待命令结束,输入编译命令:
make
编译安装过程大概要5分钟左右,还是有点长的。完成后将系统中原有的nginx用重新编译生成的nginx文件替换。
1、停止nginx
service nginx stop
2、删除原来的nginx,操作之前请确认自己的nginx已经备份
rm -rf /www/server/nginx/sbin/nginx
3、复制新编译的nginx
cp /www/server/nginx/src/objs/nginx /www/server/nginx/sbin/
4、启动nginx
service nginx start
第五、检查模块pagespeed
我们可以在root目录,用命令nginx -V来查看所有的编译模块里面是否有我们刚刚编译的pagespeed模块。
这里已经能看到心编译的模块了,既然已经安装好,下面就来配置,测试啦。
第六、配置pagespeed
在网站-设置-网站配置里面添加配置代码。
下面是我用的pagespeed配置,缓存路径为/var/cache/ngx_pagespeed,手动刷新缓存可以删掉这个目录然后重启nginx:pagespeed on;pagespeed FileCachePath /var/cache/ngx_pagespeed;# setting# X-Header 值,用于判断是否生效pagespeed XHeaderValue "Powered By www.xxx.com";# 压缩CSSpagespeed EnableFilters rewrite_css;# 合并CSSpagespeed EnableFilters combine_css;# 重写CSS,优化加载渲染页面的CSS规则pagespeed EnableFilters prioritize_critical_css;# google字体直接写入html 目的是减少浏览器请求和DNS查询pagespeed EnableFilters inline_google_font_css;# 压缩jspagespeed EnableFilters rewrite_javascript;# 合并jspagespeed EnableFilters combine_javascript;# 重置 http Vary 头pagespeed RespectVary on;# html字符转小写pagespeed LowercaseHtmlNames on;# 开启 httpspagespeed FetchHttps enable,allow_self_signed,allow_unknown_certificate_authority,allow_certificate_not_yet_valid;# 过滤规则pagespeed RewriteLevel PassThrough;# 移除 html 空白pagespeed EnableFilters collapse_whitespace;# 移除 html 注释pagespeed EnableFilters remove_comments;# DNS 预加载pagespeed EnableFilters insert_dns_prefetch;# 优化内嵌样式属性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 EnableFilters sprite_images;# 扩展缓存 改善页面资源的可缓存性pagespeed EnableFilters extend_cache;pagespeed EnableFilters combine_javascript;pagespeed XHeaderValue "Powered By ngx_pagespeed";pagespeed SupportNoScriptEnabled false;# filterspagespeed RewriteLevel CoreFilters;pagespeed EnableFilters remove_comments,collapse_whitespace;# admin直接访问 <域名>/pagespeed_admin 就可以打开管理员界面了。pagespeed Statistics on;pagespeed StatisticsLogging off;pagespeed LogDir /var/log/pagespeed;pagespeed AdminPath /pagespeed_admin;# Configuring the File Cachepagespeed FileCacheSizeKb1024000; # 1GBpagespeed FileCacheCleanIntervalMs 3600000; # 1hpagespeed FileCacheInodeLimit 500000;# Configuring the in-memory LRU Cachepagespeed LRUCacheKbPerProcess 1024;pagespeed LRUCacheByteLimit 16384;pagespeed HttpCacheCompressionLevel 3;pagespeed EnableCachePurge on;
防止网站出现问题,我们最好把压缩,合并js这个功能禁用掉。这里大家注意下。大鸟这里用的是wordpress,这贴一个wordpress的版本的配置代码!
# 启用ngx_pagespeedpagespeed on;pagespeed FileCachePath /var/cache/ngx_pagespeed;# 禁用CoreFilterspagespeed RewriteLevel PassThrough;# X-Header 值,用于判断是否生效pagespeed XHeaderValue "Powered By www.daniao.org";# 过滤规则#pagespeed RewriteLevel OptimizeForBandwidth;# 不需过滤的目录或文件pagespeed Disallow "*/wp-admin/*";pagespeed Disallow "*/wp-login.php*";# 启用压缩空白过滤器pagespeed EnableFilters collapse_whitespace; # 启用JavaScript库卸载 pagespeed EnableFilters canonicalize_javascript_libraries;# 把多个CSS文件合并成一个CSS文件#pagespeed EnableFilters combine_css;# 把多个JavaScript文件合并成一个JavaScript文件#pagespeed EnableFilters combine_javascript;# 删除带默认属性的标签 pagespeed EnableFilters elide_attributes;# 改善资源的可缓存性 pagespeed EnableFilters extend_cache;# 更换被导入文件的@import,精简CSS文件 pagespeed EnableFilters flatten_css_imports; pagespeed CssFlattenMaxBytes 5120;# 延时加载客户端看不见的图片 pagespeed EnableFilters lazyload_images;# 启用JavaScript缩小机制 pagespeed EnableFilters rewrite_javascript;# 启用图片优化机制 pagespeed EnableFilters rewrite_images;# 预解析DNS查询 pagespeed EnableFilters insert_dns_prefetch;# 重写CSS,首先加载渲染页面的CSS规则 pagespeed EnableFilters prioritize_critical_css;
第七,测试效果
随便搜索下 pagespeed,可以发现源码大部分都已经被替换了,可以看到确实是生效了。
第八、总结
这个模块还是挺占用资源的,如果是什么单核的低配置的,就不要搞了。不过启用之后,效果确实不错。如果想折腾的,不妨去试试看!
评论前必须登录!
注册