作为Nginx组件,ngx_pagespeed将重写你的网页,让用户以更快的速度进行访问。重写的工作包括压缩图片、缩减CSS和JavaScript、扩展缓存时间,同样还包括其它一些最佳实践:
本文是基于LNMP环境,LNMP脚本参考:《LNMP最新源码安装脚本》 下载解压PageSpeed模块 cd /root/lnmp/source wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.6.29.3-beta.zip unzip -q release-1.6.29.3-beta wget https://dl.google.com/dl/page-speed/psol/1.6.29.3.tar.gz tar xzf 1.6.29.3.tar.gz -C ngx_pagespeed-release-1.6.29.3-beta 查看线上版本编译参数 # /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.4.1 built by gcc 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module 增加ngx_pagespeed模块重新编译 # wget http://nginx.org/download/nginx-1.4.2.tar.gz # tar -xvzf nginx-1.4.2.tar.gz # cd nginx-1.4.2/ # ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --add-module=../ngx_pagespeed-release-1.6.29.3-beta/ # make //注意只make 不要make install (如果报错请看下面) 安装ngx_pagespeed (make) 可能会报如下错误 ../ngx_pagespeed-release-1.6.29.3-beta/psol/lib/Release/linux/ia32/pagespeed_automatic.a(104.system.o.o): In function `cv::tempfile(char const*)': system.cpp:(.text._ZN2cv8tempfileEPKc+0x1e): warning: the use of `tmpnam' is dangerous, better use `mkstemp' objs/addon/src/ngx_base_fetch.o: In function `net_instaweb::NgxBaseFetch::DecrefAndDeleteIfUnreferenced()': /root/lnmp/source/nginx-1.4.2/../ngx_pagespeed-release-1.6.29.3-beta/src/ngx_base_fetch.cc:185: undefined reference to `__sync_add_and_fetch_4' collect2: ld returned 1 exit status make[1]: *** [objs/nginx] Error 1 make[1]: Leaving directory `/root/lnmp/source/nginx-1.4.2' make: *** [build] Error 2 解决方法: ./configure 后面加上–with-cc-opt=’-DLINUX=2 -D_REENTRANT -D_LARGEFILE64_SOURCE -march=i686 -pthread’ ,如下: # make clean # ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --add-module=../ngx_pagespeed-release-1.6.29.3-beta \ --with-cc-opt='-DLINUX=2 -D_REENTRANT -D_LARGEFILE64_SOURCE -march=i686 -pthread' # make # mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx$(date +%m%d) #备份nginx原文件 # cp objs/nginx /usr/local/nginx/sbin/nginx #复制编译make后的文件覆盖nginx原文件 # /usr/local/nginx/sbin/nginx -t #检测nginx配置文件语法是否正确 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 # kill -USR2 `cat /usr/local/nginx/logs/nginx.pid` #把nginx.pid改成nginx.pid.oldbin跟着启动新的nginx # kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin` #退出旧的nignx 使用ngx_pagespeed # mkdir /var/ngx_pagespeed_cache # chown www.www /var/ngx_pagespeed_cache # cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf$(date +%m%d) #备份nginx配置文件 # vi /usr/local/nginx/conf/nginx.conf server { pagespeed on; pagespeed FileCachePath /var/ngx_pagespeed_cache; location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; } location ~ "^/ngx_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; } } # /usr/local/nginx/sbin/nginx -t Setting option from ("on") Setting option from ("FileCachePath", "/var/ngx_pagespeed_cache") 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 # service nginx restart Stopping nginx: [ OK ] Starting nginx: Setting option from ("on") Setting option from ("FileCachePath", "/var/ngx_pagespeed_cache") [ OK ] # curl -I 'https://linuxeye.com/' | grep X-Page-Speed % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:03 --:--:-- 0 X-Page-Speed: 1.4.0.0-2748 注意: 如果discuz使用了伪静态要注销掉下面部分(前面加#注销): #if (!-e $request_filename) { # return 404; #} 使用后效果如下: 使用PageSpeed模块效果演示网站:https://linuxeye.com 转载请保留固定链接: https://linuxeye.com/configuration/1540.html |