lnmp配置nginx扩展PageSpeed,Brotli等优化总结(仅供参考)

2018-2-14 / 2 评论 技术文章 / Mrxn

本文共计 5226 字,感谢您的耐心浏览与评论.

[i]注:本文只适合有一定Linux基础知识的人阅读,如果没有请慎阅,以免带来不适。

Lnmp1.4配置nginx(Nginx已经安装好了)扩展ngx_PageSpeed, Brotli , ngx_http_google_filter_module ,ngx_http_google_filter_module

环境:lnmp1.4 + vultr-JP

OS:#lsb_release -a

Debian GNU/Linux 8.10 (jessie) , PHP-7.1.7 ,MySql-5.5.56 , Nginx-1.12.2

 

先看一下我的优化后使用Google的PageSpeed Insights PC检测有99分,打开速度是挺快的!

 yid.pngpc.png

然后查看nginx配置:nginx –V (注意是大写的),结果类似如下:

ver.png

我们要做的就是再此基础上增加模块,Nginx增加模块比Apache麻烦点,Apache直接配置文件引用.so模块文件即可,Nginx需要编译。不多累述,想了解的自己Google。

首先我们在home目录下新建一个extends文件夹(mkdir /home/extends)用来装我们的扩展源码,接下来就是下载这些源码:

但是,在下载源码之前,我们需要更新一下系统和安装一些依赖:

apt-get update && apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip uuid-dev git gcc g++ make -y

git clone https://github.com/google/ngx_brotli.git

cd ngx_brotli
git submodule update --init

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

tar xzvf v1.13.35.2-stable.tar.gz

cd incubator-pagespeed-ngx-1.13.35.2-stable

wget https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz

tar xzvf 1.12.34.2-x64.tar.gz

git clone https://github.com/cuber/ngx_http_google_filter_module

git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module

 

备注:因为是lnmp1.4x + php7.1因此最后两个扩展所需要的这些模块已经自带了:pcre, openssl ,zlib以及nginx源码,如果你不是php7,请自行下载相关依赖并解压到扩展文件夹extends里面方便后面的使用。

 

接下来就是配置编译前的nginx了(在nginx源码所在的目录,里面包含configure的这个文件夹路径下):

可以创建预编译的目录或者是就在解压缩后的nginx源码目录也行。

./configure --user=www --group=www --prefix=/usr/local/nginx --with-cc-opt=-Wno-deprecated-declarations --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_realip_module  --with-http_sub_module --with-openssl=/root/lnmp1.4/src/openssl-1.0.2l --add-module=/home/extends/ngx_http_google_filter_module --add-module=/home/extends/ngx_http_substitutions_filter_module --add-module=/home/extends/ngx_brotli --add-module=/home/extends/incubator-pagespeed-ngx-1.13.35.2-stable

 

需要注意的是:上面的命令你可以根据你自己的路径来修改,注意拼写,推荐使用Tab键补全获得准确的pwd,最重要的就是你需要会看系统的提示,我觉得Linux的系统提示是非常完善的,你根据提示去搜索基本上都是可以找到答案的,特别是像这些流行的应用出现的问题。如果有搞不定的,可以联系我(YWRtaW5AbXJ4bi5uZXQ=)有空会给你解答,当然也可以付费帮你配置这些,毕竟时间就是金钱,而且一个人的精力有限。

如果提示:make[1]: Leaving directory '/root/nginx-1.12.2'这类的,你可能是配置好后编译失败了,需要清除,重新配置。在nginx源码目录执行,make clean ,然后再重新./configure就行。如果还是不行,就自行去预编译的目录下查看是否有nginx二进制文件,如果没有,肯定失败了,否则,停止Nginx,备份已安装的nginx,再将这个预编译好的复制到旧Nginx所在目录,然后启动Nginx,执行nginx –t ,检查看是否出错,如果不出错就打开网页看看是否正常,正常就OK了。不正常的话就慢慢排查吧。

 

下面贴一下nginx 的主要配置代码:

nginx.conf :

        gzip on;

        gzip_min_length  1k;

        gzip_buffers     4 16k;

        gzip_http_version 1.1;

        gzip_comp_level 2;

        gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;

        gzip_vary on;

        gzip_proxied   expired no-cache no-store private auth;

        gzip_disable   "MSIE [1-6]\.";

      

              brotli on;

              brotli_types text/plain text/css text/xml application/xml application/json text/javascript application/javascript application/x-javascript

              brotli_static off;

              brotli_comp_level 11;

              brotli_buffers 16 8k;

              brotli_window 512k;

              brotli_min_length 20;   

 

vhost/mrxn.net.conf:

 

        # 启用ngx_pagespeed

        pagespeed on;

        pagespeed FileCachePath /tmp/cache/ngx_pagespeed_cache;

        # 禁用CoreFilters

        pagespeed RewriteLevel PassThrough;

        # 启用压缩空白过滤器

        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;

        # Example 禁止pagespeed 处理/admin/目录(可选配置,可参考使用)

        pagespeed Disallow "*/admin/*";

 

配置后测试没有问题的话基本是这个样子的:

configure.png

如果配置过程中有其他的错误,请根据错误提示Google或自查。实在不行就找人吧。

上面的步骤都顺利通过了之后就可以去配置nginx了,主要是配置Google的反代。可以参考我之前写的文章,下面简单记录一下:

备份原有已安装好的nginx:

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
service nginx stop

然后将刚刚编译好的nginx覆盖掉原有的nginx(这个时候nginx要停止状态,通过上面的命令,已经停止了):

cp ./objs/nginx /usr/local/nginx/sbin/

然后启动nginx (service nginx start),就可以通过命令nginx -V 查看第三方扩展是否已经加入成功.

下面说下在PHP7下如何使emlog支持,其实就是修改几个变量:

1.首先在/include/lib/option.php

大约11行位置

//默认MySQL链接方,mysql或mysqli

把const DEFAULT_MYSQLCONN = 'mysql';

改为 const DEFAULT_MYSQLCONN = 'mysqli';

2.在/include/lib/cache.php

大约195行

把$$row['option_name'] = $row['option_value'];

改为 ${$row['option_name']} = $row['option_value'];

3.在admim/seo.php

大约在15行、19行共两上

把 $$t改为

 ${$t}

4.在admim/views/admin_log.php

大约在86行、88行、90行共三个

把$$a $$b $$a

改为 ${$a} ${$b} ${$a}

5.在admim/views/comment.php

大约在18行

把 $$a = "class=\"filter\"";

改为 ${$a} = "class=\"filter\"";

另外有些插件和主题是固定了使用mysql连接类,这样还需要修改插件和主题中的数据库连接方式,不然直接报数据库错误。

比如:

$DB = MySql::getInstance();

都要改为$DB = Database::getInstance();

小提示:我是使用的sublime text  使用正则匹配搜索—正则如下:^(\$)(\$)a,不然你会搜不到$$a的,可以使用sublime的指定文件夹搜索,在你的整个网站目录所有文件里搜索相关变量,进行批量替换。

regx.png

我之前发的相关文章(仅供参考):

两种方式反代Google(镜像)--nginx反代和nginx扩展

https://mrxn.net/Linux/nginx_http_google_filter.html

为nginx添加这些额外的第三方扩展加速你的web吧

https://mrxn.net/Linux/nginx_add_module.html

 

参考文章—感谢他们的分享:

https://www.modpagespeed.com/doc/build_ngx_pagespeed_from_source

https://www.lvtao.net/config/nginx-google-brotli.html

https://zhangge.net/5063.html

标签: lnmp

转载:转载请注明原文链接 - lnmp配置nginx扩展PageSpeed,Brotli等优化总结(仅供参考)


2条回应:“lnmp配置nginx扩展PageSpeed,Brotli等优化总结(仅供参考)”

  1. wys

    用过两年vps,实在没这方面的功底,现在还是感觉虚机好上手,哈哈!

      • Mrxn

        @wys:虚拟机确实方便 但是我用VPS的可不仅仅是WEB方面,还有其他的用途,多了去。。。个人网盘,梯子,测试系统,API,编译,shell测试,公网IP这些。。太多了 哈哈哈,主要是自由。。。可操作度高!


发表评论

{view_code_no}