Nginx配置ngx_pagespeed

pagespeed介绍

pagespeed是 Goolge 为 Apache 和 nginx 开发的前端优化扩展模块,其中适用 Apache 环境的叫 mod_pagespeed,适用于 nginx 环境的叫 ngx_pagespeed。

pagespeed 的功能包括但不限于以下方面:

优化传输带宽(过滤)(压缩图片、CSS、JS文件,去除html空白、注释…)、降低请求(CSS、JS文件合并、图片雪碧、识别并重定向常用JS库、缓存控制)、域名映射(支持CDN)、提升客户端体验(图片预加载、延迟加载,移动端图像优化),同时还提供对 https 的支持。

安装

安装方法 Google pagespeed 网站上有详细介绍,复制过来方便不能翻墙的朋友查看。

安装依赖

RedHat, CentOS, or Fedora:

1
sudo yum install gcc-c++ pcre-devel zlib-devel make unzip

Ubuntu or Debian:

1
sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip

安装ngx_pagespeed

目前 ngx_pagespeed 最新的版本是 1.12.34.2 beta版(要求 gcc ≥ 4.8 or clang ≥ 3.3),查看最新版本

1
2
3
4
5
6
7
cd /opt
NPS_VERSION=1.12.34.2
wget https://github.com/pagespeed/ngx_pagespeed/archive/v${NPS_VERSION}-beta.zip
unzip v${NPS_VERSION}-beta.zip
cd ngx_pagespeed-${NPS_VERSION}-beta/
wget https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}-x64.tar.gz
tar -xzvf ${NPS_VERSION}-x64.tar.gz

下载 nginx 并编译 ngx_pagespeed 模块

编译 ngx_pagespeed 模块

1
2
3
4
5
6
7
8
9
cd
# check http://nginx.org/en/download.html for the latest version
NGINX_VERSION=1.10.3
wget http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
tar -xvzf nginx-${NGINX_VERSION}.tar.gz
cd nginx-${NGINX_VERSION}/
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module --add-module=/opt/ngx_pagespeed-1.12.34.2-beta
make
make install

因为ngx_pagespeed模块的编译需要gcc ≥ 4.8 or clang ≥ 3.3,而我们使用的centos6系列gcc源版本只有4.7。官网给了一个解决方案:

1
2
3
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

然后编译nginx的时候使用

1
2
3
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module --add-module=/opt/ngx_pagespeed-1.12.34.2-beta --with-cc=/opt/rh/devtoolset-2/root/usr/bin/gcc
make
make install

我理解的是通过yum源将高版本的gcc已经安装到了/opt/rh/devtoolset-2/root/usr/bin/gcc目录下,然后编译的时候指定由高版本的gcc来进行编译。

配置