nginx 优化 nginx-pagespeed

1.升级GCC

rpm --import https://linux.web.cern.ch/linux/scientific6/docs/repository/cern/slc6X/i386/RPM-GPG-KEY-cern
wget -O /etc/yum.repos.d/slc6-devtoolset.repo https://linux.web.cern.ch/linux/scientific6/docs/repository/cern/devtoolset/slc6-devtoolset.repo
yum install devtoolset-2-gcc-c++ devtoolset-2-binutils -y

yum install gcc cmake unzip wget gcc-c++ pcre-devel zlib-devel -y

 2.安装pagespeed

cd /usr/local/src
wget https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
unzip v1.12.34.2-stable.zip
cd ngx_pagespeed-1.12.34.2-stable
wget https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
tar -zxvf 1.12.34.2-x64.tar.gz

 3.重新编译nginx加入pagespeed支持

cd /usr/local/src
wget http://nginx.org/download/nginx-1.12.1.tar.gz
tar -zxvf nginx-1.12.1.tar.gz
cd nginx-1.12.1
./configure  --prefix=/usr/local/nginx-1.12.1 \
--user=nginx --group=nginx \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_realip_module \
--with-openssl=/usr/local/src/openssl-1.0.2k \
--with-ld-opt=-Wl,-rpath,/usr/local/lib \
--add-module=../lua-nginx-module \
--add-module=../ngx_devel_kit \
--add-module=../echo-nginx-module \
--add-module=/usr/local/src/ngx_pagespeed-1.12.34.2-stable \
--with-cc=/opt/rh/devtoolset-2/root/usr/bin/gcc

make
#make install   ### 升级不要执行

 4.配置pagespeed,所属目录需要写权限

mkdir -p /data/nginx/pagespeed_cache
chown -R nginx.nginx /data/nginx/pagespeed_cache/

vim /usr/local/nginx/conf/nginx.conf
........
server {
	pagespeed on;
	pagespeed FileCachePath /data/nginx/pagespeed_cache;

	# Ensure requests for pagespeed optimized resources go to the pagespeed handler
	# and no extraneous headers get set.
	location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
	location ~ "^/pagespeed_static/" { }
	location ~ "^/ngx_pagespeed_beacon$" { }
}
.......

 5.pagespeed.conf配置模块单独取出来

# 参考文档:https://www.modpagespeed.com/doc/config_filters      
# https://www.ngxpagespeed.com/ngx_pagespeed_example/
# https://www.zuohuadong.cn/src/lnmp/pagespeed.conf

# Rewrite 级别 出于安全考虑 这里尽量不要修改
#pagespeed RewriteLevel PassThrough;
pagespeed RewriteLevel CoreFilters;

# 移除X-Page-Speed 头
#pagespeed DisableFilters add_head;
pagespeed RespectVary off;
#pagespeed ModifyCachingHeaders off;
#pagespeed XHeaderValue "Powered By Pagespeed";
#Header unset X-Mod-Pagespeed;
add_header X-Powered-By "EasyEngine 2.2.3";

# 自动去除缩进和页面中的注释  if 注释除外
pagespeed EnableFilters collapse_whitespace,remove_comments;

# 去除多余的空格和注释,自动合并多个css,js文件
pagespeed EnableFilters rewrite_css;
pagespeed EnableFilters rewrite_javascript;
pagespeed EnableFilters combine_css;
pagespeed EnableFilters combine_javascript;

# 
pagespeed EnableFilters inline_css;
pagespeed CssInlineMaxBytes 4096;
pagespeed EnableFilters inline_javascript;
pagespeed JsInlineMaxBytes 4096;

# 删除带默认属性的标签,改善资源的可缓存性
pagespeed EnableFilters elide_attributes;
pagespeed EnableFilters extend_cache;

# 更换被导入文件的@import,精简CSS文件    
pagespeed EnableFilters flatten_css_imports;
pagespeed CssFlattenMaxBytes 5120;

#启用图片优化机制 ,延时加载客户端看不见的图片,自动缩放图片到合适大小,自动压缩图片
pagespeed EnableFilters rewrite_images;
pagespeed EnableFilters inline_images;
pagespeed EnableFilters lazyload_images;
pagespeed EnableFilters resize_images;
pagespeed EnableFilters recompress_images;

# 重写CSS,首先加载渲染页面的CSS规则
pagespeed EnableFilters convert_meta_tags;
pagespeed EnableFilters prioritize_critical_css;

# 支持webp
pagespeed EnableFilters convert_gif_to_png;
pagespeed EnableFilters convert_png_to_jpeg;
pagespeed EnableFilters convert_jpeg_to_webp;

# 预解析DNS查询    
pagespeed EnableFilters insert_dns_prefetch;

location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
#location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { }
location ~ "^/pagespeed_static/" { }
location ~ "^/ngx_pagespeed_beacon$" { }
location /ngx_pagespeed_statistics { allow 127.0.0.1; deny all; }
location /ngx_pagespeed_message { allow 127.0.0.1; deny all; }

6.测试pagespeed模块

[root@redis-node02 nginx]# /usr/local/nginx//sbin/nginx  -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@redis-node02 nginx]# /usr/local/nginx//sbin/nginx  -s reload
[root@redis-node02 nginx]# curl -I -p localhost
HTTP/1.1 200 OK
Server: nginx/1.12.1
Content-Type: text/html
Connection: keep-alive
Vary: Accept-Encoding
Date: Tue, 05 Sep 2017 12:24:37 GMT
X-Page-Speed: 1.12.34.2-0
Cache-Control: max-age=0, no-cache

 ngx_pagespeed模块的主要功能大致有

1)图像优化:剥离元数据、动态调整,重新压缩
2)CSS和JavaScript压缩、合并、级联、内联
3)小资源内联
4)推迟图像和JavaScript加载
5)对HTML重写、压缩空格、去除注释等
6)提升缓存周期

作为Nginx组件,ngx_pagespeed将重写你的网页,让用户以更快的速度进行访问。重写的工作包括压缩图片、缩减CSS和JavaScript、扩展缓存时间,同样还包括其它一些最佳实践:
1)优化缓存----整合应用程序的数据和逻辑
2)最小化round-trip次数----削减连续的请求/响应周期数
3)最小化请求开销----削减上传大小
4)最小化负载大小----削减响应、下载及缓存页面大小
5)优化浏览器渲染----改善浏览器页面布局
6)移动方面的优化----优化站点移动网络和设备方面的相关特性

 

https://www.youtube.com/watch?v=PYiz4-f_NYc

 

posted @ 2017-11-10 11:56  sunmmi  阅读(665)  评论(0)    收藏  举报