Nginx PageSpeed模块配置和使用

简介:

Nginx PageSpeed模块配置和使用

Google Pagespeed在作为一个Nginx的模块在研发这么久之后仍是beta版本,着实有点尴尬,不过也证明了该项目是成功的,最起码它仍在迭代,实际上在使用中,我们也碰到一些非模块本身的问题,譬如当它基于反向代理时模板的寻址,图片的URL重写…为此不得不对其做一些配置让它不是看起来多了一个协议,而是真正的能对页面的细节进行优化,最大限度的压榨服务器的的性能提高用户访问速度..

 

在实际使用中,它能够带来什么

    1、优化缓存并整合应用程序的数据和逻辑
    2、优化往返请求,降低请求开销,降低响应页面大小
    3、对CSS Javascript 进行合并,这里相对来说要慎用(需要前期测试)
    4、DNS预加载,延时加载图片等过滤器的支持(赞)
    5、等等(少说多做)

 

首先是我的目录结构

 
 
  1. ###其他目录不作解释,source 目录即所有源码包的路径###
  2. [root@ipython software]# ls /software/
  3. mysql nginx php readme.txt sharelib source var_temp
  4. ###库文件的支持###
  5. [root@ipython software]# ls /software/sharelib/
  6. curl freetype gd google-libunwind google-perftools libiconv libjpeg libmcrypt libpng libtool libxml2 mhash ncurses openssl pcre zlib
  7. Nginx版本:
  8. [root@ipython software]# curl -I 127.0.0.1
  9. HTTP/1.1 200 OK
  10. Server: nginx/1.7.5
  11. Date: Fri, 07 Nov 2014 14:26:25 GMT
  12. Content-Type: text/html
  13. Connection: keep-alive
  14. Vary: Accept-Encoding

 

下载地址和参考地址(墙内就不建议点了):

ngx-pagespeed for github

 
 
  1. [root@ipython source]# wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.9.32.1-beta.zip

 ngx-pagespeed optimization library

 
 
  1. [root@ipython source]# wget https://dl.google.com/dl/page-speed/psol/1.9.32.1.tar.gz

ngx-pagespeed official

 
 
  1. http://ngxpagespeed.com/ngx_pagespeed_example/

GoogleDevelopers

 
 
  1. https://developers.google.com/speed/docs/mod_pagespeed/build_ngx_pagespeed_from_source

 

开始编译Ngx-pagespeed

 
 
  1. ###解开程序包--我在写这篇文章的时候,它似乎已经又更新了...建议参考的同学使用最新版###
  2. [root@ipython source]# unzip release-1.9.32.1-beta
  3. [root@ipython source]# cd ngx_pagespeed-release-1.9.32.1-beta/
  4. ##将pagespeed 的优化库解压至当前目录##
  5. [root@ipython ngx_pagespeed-release-1.9.32.1-beta]# tar zxf ../1.9.32.1.tar.gz -C ./
  6. ##此刻你的目录路径应该是这样的##
  7. [root@ipython ngx_pagespeed-release-1.9.32.1-beta]# ls
  8. config cpp_feature LICENSE psol README.md scripts src test
  9. ##重新编译nginx##
  10. [root@ipython ngx_pagespeed-release-1.9.32.1-beta]# cd ../nginx-1.7.5/
  11. ###请基于你自己的编译参数加上最后一条 --add-module ,切勿直接复制粘贴,因为我的环境是基于自己弄的一键包来演示的(如果你也需要?)###
  12. [root@ipython nginx-1.7.5]# ./configure --prefix=/software/nginx --user=nginx --group=nginx --add-module=../ngx_pagespeed-release-1.9.32.1-beta
  13. ##预配置结束后执行##
  14. [root@ipython nginx-1.7.5]# make
  15. ##如果你是全新安装,在预配置结束后make install,如果是重新编译,你可以这样##
  16. [root@ipython nginx-1.7.5]# mv /software/nginx/sbin/nginx /software/nginx/sbin/nginx.bak
  17. [root@ipython nginx-1.7.5]# cp objs/nginx /software/nginx/sbin/
  18. [root@ipython nginx-1.7.5]# kill -USR2 `cat /software/nginx/nginx.pid`
  19. [root@ipython nginx-1.7.5]# kill -QUIT `cat /software/nginx/nginx.pid.oldbin`

 

让常用的配置开启Pagespeed

 
 
  1. ##注意那条include##
  2. [root@ipython nginx-1.7.5]# vi /software/nginx/conf/nginx.conf
  3. server
  4. {
  5. listen 80;
  6. server_name 127.0.0.1;
  7. include pagespeed.conf;
  8. ...我省略了好多行
  9. #新增配置文件,配置后面再解释#
  10. [root@ipython nginx-1.7.5]# cat /software/nginx/conf/pagespeed.conf
  11. pagespeed on;
  12. pagespeed FileCachePath /software/var_temp/nginx/pagespeed/;
  13. ##重启nginx|reload也可以##
  14. [root@ipython nginx-1.7.5]# service nginx restart
  15. Stopping nginx: [ OK ]
  16. Starting nginx: [1107/230146:INFO:google_message_handler.cc(35)] No threading detected. Own threads: 1 Rewrite, 1 Expensive Rewrite.
  17. [ OK ]
  18. ##看看http 和前面是不是不一样了##
  19. [root@ipython nginx-1.7.5]# curl -I 127.0.0.1
  20. HTTP/1.1 200 OK
  21. Server: nginx/1.7.5
  22. Content-Type: text/html
  23. Connection: keep-alive
  24. Vary: Accept-Encoding
  25. Date: Fri, 07 Nov 2014 15:03:29 GMT
  26. X-Page-Speed: 1.9.32.1-4238
  27. Cache-Control: max-age=0, no-cache
  28. ##临时关闭pagespeed##
  29. [root@ipython nginx-1.7.5]# curl -I 127.0.0.1?ModPagespeed=off
  30. HTTP/1.1 200 OK
  31. Server: nginx/1.7.5
  32. Date: Fri, 07 Nov 2014 15:04:56 GMT
  33. Content-Type: text/html
  34. Connection: keep-alive
  35. Vary: Accept-Encoding

 

一个示例配置文件

 
 
  1. [root@ipython nginx-1.7.5]# cat /software/nginx/conf/pagespeed.conf
  2. # 启用ngx_pagespeed
  3. pagespeed on;
  4. pagespeed FileCachePath /software/var_temp/nginx/pagespeed/;
  5. # 禁用CoreFilters
  6. pagespeed RewriteLevel PassThrough;
  7. # 启用压缩空白过滤器
  8. pagespeed EnableFilters collapse_whitespace;
  9. # 启用JavaScript库卸载
  10. pagespeed EnableFilters canonicalize_javascript_libraries;
  11. # 把多个CSS文件合并成一个CSS文件
  12. pagespeed EnableFilters combine_css;
  13. # 把多个JavaScript文件合并成一个JavaScript文件
  14. pagespeed EnableFilters combine_javascript;
  15. # 删除带默认属性的标签
  16. pagespeed EnableFilters elide_attributes;
  17. # 改善资源的可缓存性
  18. pagespeed EnableFilters extend_cache;
  19. # 更换被导入文件的@import,精简CSS文件
  20. pagespeed EnableFilters flatten_css_imports;
  21. pagespeed CssFlattenMaxBytes 5120;
  22. # 延时加载客户端看不见的图片
  23. pagespeed EnableFilters lazyload_images;
  24. # 启用JavaScript缩小机制
  25. pagespeed EnableFilters rewrite_javascript;
  26. # 启用图片优化机制
  27. pagespeed EnableFilters rewrite_images;
  28. # 预解析DNS查询
  29. pagespeed EnableFilters insert_dns_prefetch;
  30. # 重写CSS,首先加载渲染页面的CSS规则
  31. pagespeed EnableFilters prioritize_critical_css;
  32. # Example 禁止pagespeed 处理/ipython/目录
  33. pagespeed Disallow "*/ipython/*";

原文发布时间:2014-11-14

本文来自云栖合作伙伴“linux中国”


目录
相关文章
|
25天前
|
运维 前端开发 应用服务中间件
LNMP详解(八)——Nginx动静分离实战配置
LNMP详解(八)——Nginx动静分离实战配置
28 0
|
24天前
|
前端开发 应用服务中间件 nginx
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
Nginx配置详解Docker部署Nginx使用Nginx部署vue前端项目
99 0
|
1天前
|
前端开发 JavaScript 应用服务中间件
前端vue2、vue3去掉url路由“ # ”号——nginx配置(二)
前端vue2、vue3去掉url路由“ # ”号——nginx配置
15 0
|
1天前
|
JavaScript 前端开发 应用服务中间件
angular引入包、路由权限配置、打包问题与nginx配置问题(简单部署)
angular引入包、路由权限配置、打包问题与nginx配置问题(简单部署)
9 0
|
5天前
|
安全 应用服务中间件 网络安全
SSL原理、生成SSL密钥对、Nginx配置SSL
现在,你的Nginx虚拟主机应该已经配置了SSL,可以通过HTTPS安全访问。确保在生产环境中使用有效的SSL证书来保护通信的安全性。
17 0
|
7天前
|
域名解析 缓存 负载均衡
Nginx正向代理域名的配置
Nginx正向代理域名的配置
|
7天前
|
前端开发 JavaScript 应用服务中间件
修改Jeecg-boot context-path(附加图片+Nginx配置)
修改Jeecg-boot context-path(附加图片+Nginx配置)
16 0
|
18天前
|
应用服务中间件 nginx
nginx进行反向代理的配置
在Nginx中设置反向代理的步骤:编辑`/etc/nginx/nginx.conf`,在http段加入配置,创建一个监听80端口、服务器名为example.com的虚拟主机。通过`location /`将请求代理到本地3000端口,并设置代理头。保存配置后,使用`sudo nginx -s reload`重载服务。完成配置,通过example.com访问代理服务器。
25 0
|
19天前
|
应用服务中间件 网络安全 nginx
nginx配置https访问
nginx配置https访问
33 0
|
28天前
|
应用服务中间件 nginx
nginx配置访问qicaitun.com强制跳转www.qicaitun.com
nginx配置访问qicaitun.com强制跳转www.qicaitun.com
9 0