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

浙公网安备 33010602011771号