CentOS6 Nginx启用ngx_pagespeed加速站点访问
1、PageSpeed的功能特性
PageSpeed模块可以使用数量众多的重写"过滤器",每个过滤器都可以选择性地开启/关闭,从而自动进行各种优化(比如,减小文档大小、减少HTTP请求数据、减少HTTP往返次数以及缩短DNS解析时间)。
下面是ngx_pagespeed支持的其中一些过滤器。想了解支持的全部过滤器,请参阅官方文档。
Collapse Whitespace(压缩空白):通过把HTML网页中的多处连续空白换成一处空白,减少带宽使用量。
Canonicalize JavaScript Libraries(规范化转换JavaScript库):通过自动把流行的JavaScript库换成免费托管的JavaScript库(比如由谷歌托管),减少带宽使用量。
Combine CSS(合并CSS):通过把多个CSS文件合并成一个CSS文件,减少HTTP请求数量。
Combine JavaScript(合并JavaScript):通过把多个JavaScript文件合并成一个JavaScript文件,减少HTTP请求数量。
Elide Attributes(省略属性):通过删除由默认属性指定的标签,缩小文档大小。
Extend Cache(扩展缓存):通过优化网页资源的可缓存性,减少带宽使用量。
Flatten CSS Imports(精简CSS导入):通过删除CSS文件中的@import,减少HTTP请求往返次数。
Lazyload Images(延时加载图片):延时加载在客户端浏览器上看不见的图片。
Minify JavaScript(缩小JavaScript):通过缩小JavaScript,减少带宽使用量。
Optimize Images(优化图片):通过引入更多的内嵌图片、压缩图片,或者将GIF图片转换成PNG图片,优化图片分发。
Pre-Resolve DNS(预解析DNS):通过预解析DNS,缩短DNS解析时间。
Prioritize Critical CSS(优化加载关键CSS规则):重写CSS文件,以便首先加载渲染页面的CSS规则。
2、下载解压PageSpeed模块
Scientific Linux 6 provides gcc-4.8 packages that work on CentOS 6.
sudo rpm --import https://linux.web.cern.ch/linux/scientific6/docs/repository/cern/slc6X/i386/RPM-GPG-KEY-cern sudo wget -O /etc/yum.repos.d/slc6-devtoolset.repo https://linux.web.cern.ch/linux/scientific6/docs/repository/cern/devtoolset/slc6-devtoolset.repo sudo yum install devtoolset-2-gcc-c++ devtoolset-2-binutils cd /usr/local/src/ wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.11.33.3-beta.zip unzip -q release-1.11.33.3-beta.zip wget https://dl.google.com/dl/page-speed/psol/1.11.33.3.tar.gz tar xzf 1.11.33.3.tar.gz -C ngx_pagespeed-release-1.11.33.3-beta #解压出来的psol文件夹到上面ngx_pagespeed-release-1.11.33.3-beta文件夹内
3、然后到nginx源码目录,添加以下代码重新编译nginx
./configure --prefix=/usr/local/nginx --user=www --group=www --add-module=/root/ngx_http_google_filter_module --add-module=/root/ngx_http_substitutions_filter_module --add-module=/root/ngx_pagespeed-release-1.11.33.3-beta --with-cc=/opt/rh/devtoolset-2/root/usr/bin/gcc --with-openssl=/root/openssl --with-pcre=/root/pcre --with-zlib=/root/zlib --with-http_stub_status_module --with-http_secure_link_module --with-http_v2_module --with-http_ssl_module --with-ipv6 --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-http_sub_module --with-stream --with-stream_ssl_module make //不需要安装 make install /etc/init.d/nginx stop cd objs/ cp nginx /usr/local/nginx/sbin/ //覆盖原文件 /etc/init.d/nginx start
4、配置Nginx中的ngx_pagespeed模块
PageSpeed过滤器,有两种不同的级别可供你选择:CoreFilters和PassThrough。除非有所指定,否则默认情况下使用CoreFilters。
使用CoreFilters
server { # 侦听的端口 listen 80; # 服务器名称 server_name www.zhangfangzhou.cn; # 记下根目录 root /usr/local/nginx/html; # 访问日志 access_log /var/log/nginx/access.log mAIn; # 启用ngx_pagespeed pagespeed on; pagespeed FileCachePath /var/ngx_pagespeed_cache; # 启用CoreFilters pagespeed RewriteLevel CoreFilters; # 禁用CoreFilters中的某些过滤器 pagespeed DisableFilters rewrite_images; # 选择性地启用额外的过滤器 pagespeed EnableFilters collapse_whitespace; pagespeed EnableFilters lazyload_images; pagespeed EnableFilters insert_dns_prefetch; }
对高级用户而言:使用PassThrough
server { # 侦听的端口 listen 80; # 服务器名称 server_name www.zhangfangzhou.cn; # 记下根目录 root /usr/local/nginx/html; # 访问日志 access_log /var/log/nginx/access.log main; # 启用ngx_pagespeed pagespeed on; pagespeed FileCachePath /var/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; }
5、建立缓存文件夹并赋予nginx用户权限
sudo mkdir /var/ngx_pagespeed_cache sudo chown www:www /var/ngx_pagespeed_cache