配置Nginx中的ngx_pagespeed模块
想启用并配置ngx_pagespeed,就要编辑Nginx配置的server部分。nginx.conf的下面这个示例表明了如何指定一个或多个PageSpeed过滤器。
$ sudo vi /etc/nginx/nginx.conf server { # 侦听的端口 listen 80; # 服务器名称 server_name xmodulo.com www.xmodulo.com; # 记下根目录 root /usr/local/nginx/html; # 访问日志 access_log /var/log/nginx/access.log main; # 启用ngx_pagespeed pagespeed on; # 在此放置一个或多个pagespeed过滤器。 }
说到指定PageSpeed过滤器,有两种不同的级别可供你选择:CoreFilters和PassThrough。除非有所指定,否则默认情况下使用CoreFilters。
对新手用户而言:使用CoreFilters
CoreFilters含有一系列PageSpeed过滤器,谷歌认为这些过滤器对大多数网站来说是安全的。如果启用CoreFilters,你就自动启用了一系列"安全"规则。所以,推荐新手用户采用这种方法。如果你愿意,也可以禁用CoreFilters中的某个或某些过滤器,或者选择性地启用额外的过滤器。下面这个例子表明了使用CoreFilters的ngx_pagespeed配置。
server { # 侦听的端口 listen 80; # 服务器名称 server_name xmodulo.com www.xmodulo.com; # 记下根目录 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; }
想了解CoreFilters中的全部过滤器,请参阅官方文档。
对高级用户而言:使用PassThrough
如果是高级用户,你可以使用PageThrough级别,你可以手动启用个别过滤器。
server { # 侦听的端口 listen 80; # 服务器名称 server_name xmodulo.com www.xmodulo.com; # 记下根目录 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; }
另外的配置步骤:
创建将由Nginx写入的一个文件缓存目录。
$ sudo mkdir /var/ngx_pagespeed_cache $ sudo chown nginx:nginx /var/ngx_pagespeed_cache
为了方便起见,为Nginx创建一个初始化脚本。
$ wget https://github.com/MovLib/www/raw/master/bin/init-nginx.sh $ sudo mv init-nginx.sh /etc/init.d/nginx $ sudo chmod 0755 /etc/init.d/nginx
最后,启动Nginx。
$ sudo /etc/init.d/nginx start
注意:除了ngx_pagespeed外,你可能还需要定义额外的Nginx模块(比如HTTPS/SSL支持等),具体视需求而定。这种情况下,你需要在Nginx编译这个环节来添加这些模块。请参阅这篇教程(http://xmodulo.com/2014/01/compile-install-nginx-web-server.html),了解如何启用额外的Nginx模块。
原文链接:http://xmodulo.com/2014/01/speed-nginx-web-server-pagespeed.html