简介
NGX_Pagespeed,或简称Pages,是一个Nginx模块,旨在通过减少资源的大小来自动优化您的站点,从而减少客户端浏览器需要加载它的时间。如果您还不熟悉,请查看它的官方site.
本文将指导您完成Nginx的页面速度模块的安装和配置。重要的是要知道,Nginx不支持模块的动态加载,这些模块在其他Web服务器上可用,比如阿帕奇。由于Nginx不支持此功能,因此需要从源码构建Nginx才能添加模块。
拥有自己的定制包有一个缺点--当有新版本时,您只需负责更新它。在权衡使用NGX_PAGESPESPED的利弊时,请考虑这一点。
预约
本指南是为Ubuntu 14.04编写的。CentOS 7 version和Debian8 version]也是可用的。
在学习本教程之前,请确保您已完成以下先决条件:
- Ubuntu 14.04水滴
- 非超级用户sudo(有关详细信息,请查看使用Ubuntu 14.04的初始服务器设置]。)
除非另有说明,否则本教程中需要超级用户权限的所有命令都应该以具有sudo权限的非超级用户身份运行。
Step 1-下载源代码及其依赖项
首先,我们必须确保通过apt-get
提供的包列表已经更新:
1sudo apt-get update
接下来,我们必须满足运行nginx所需的所有依赖项。为此,请运行以下命令:
1sudo apt-get build-dep nginx
然后,在你的主目录下创建一个文件夹来下载Nginx的源码包:
1mkdir ~/custom-nginx
更改到此新创建的目录:
1cd ~/custom-nginx
然后,使用以下命令下载该目录下的Nginx源包:
1sudo apt-get source nginx
为了确认我们的想法一致,请列出~/Custom-nginx
文件夹的内容:
1ls ~/custom-nginx
结果应该如下所示:
1[secondary_label Output of ls ~/custom-nginx]
2nginx-1.4.6 nginx_1.4.6-1ubuntu3.3.debian.tar.gz nginx_1.4.6-1ubuntu3.3.dsc nginx_1.4.6.orig.tar.gz
如您所见,在撰写本教程时,Nginx源包的版本是1.4.6。要开始添加NGX_Pagespeed模块,您首先需要进入解压文件夹nginx-1.4.6
中的modes
文件夹:
1cd nginx-1.4.6/debian/modules
在此目录中,使用以下命令从其github repository]下载最新的ngx_pagespeed源代码归档文件:
1sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/master.zip
下载完成后,您需要使用unzip
实用程序将其解压缩。如果您还没有unzip
,可以使用以下命令进行安装:
1sudo apt-get install unzip
之后,使用以下命令解压缩下载的文件:
1sudo unzip master.zip
这将在您的~/nginx-1.4.6/debian/modes
目录下创建一个名为ngx_ages-master
的新目录。为方便起见,请使用以下命令将此目录重命名为ngx_pagespeed
:
1sudo mv ngx_pagespeed-master ngx_pagespeed
进入新的ngx_pagespeed
目录:
1cd ngx_pagespeed
从那里下载编译所需的页面速度优化库(PSOL):
1sudo wget https://dl.google.com/dl/page-speed/psol/1.9.32.6.tar.gz
如果在阅读本文时指向PSOL存档的链接不起作用,只需跳过这一步。如果您在接下来的步骤中的编译过程中缺少这些库,您将看到一个错误,其中包含有关稍后如何获取包的更新说明。
最后,解压~/custom-nginx/nginx-1.4.6/debian/modules/ngx_pagespeed
目录中的psol包:
1sudo tar -xzvf 1.9.32.6.tar.gz
第二步-定制源代码
此时,您已经准备好定制编译规则,并在安装中包含NGX_PAGESPESPEED。为此,请使用您喜欢的编辑器编辑~/Custom-nginx/nginx-1.4.6/debian/rules
文件:
1sudo nano ~/custom-nginx/nginx-1.4.6/debian/rules
在这里,你有五种不同的场景来构建Nginx的包:core
,full
,light
,extras
和naxsi
。正如它们的名字所暗示的那样,'common'包含没有服务器的常见Nginx文件,'full'包括一个带有最流行模块的服务器,'light'创建一个只带有基本模块的服务器,'extras'用于其中带有一些额外花哨模块的服务器,而'naxsi'还有naxsi模块(Web应用程序防火墙)。
让我们假设您需要一个light
Nginx设置加上ngx_ages_peed。因此,在light_CONFIGURE_FLAGS
配置块的末尾添加一行:
1[label ~/custom-nginx/nginx-1.4.6/debian/rules]
2--add-module=$(MODULESDIR)/ngx_pagespeed \
请不要忘记在行尾加一个反斜杠(\
)。整个配置块应该如下所示:
1[label ~/custom-nginx/nginx-1.4.6/debian/rules]
2config.status.light: config.env.light
3 cd $(BUILDDIR_light) && ./configure \
4 $(common_configure_flags) \
5 --with-http_gzip_static_module \
6 --without-http_browser_module \
7 --without-http_geo_module \
8 --without-http_limit_req_module \
9 --without-http_limit_zone_module \
10 --without-http_memcached_module \
11 --without-http_referer_module \
12 --without-http_scgi_module \
13 --without-http_split_clients_module \
14 --without-http_ssi_module \
15 --without-http_userid_module \
16 --without-http_uwsgi_module \
17 --add-module=$(MODULESDIR)/nginx-echo \
18 --add-module=$(MODULESDIR)/ngx_pagespeed \
19 >$@
20 touch $@
如果您发现不同的Nginx设置更方便,也可以将相同的代码行添加到其他构建场景中。
接下来,增加源包的版本,因为这将帮助您在以后固定包。为此,请使用文本编辑器打开changelog
文件:
1sudo nano ~/custom-nginx/nginx-1.4.6/debian/changelog
changelog
文件的第一行表示当前包的版本(1.4.6-1ubuntu3.3
)和Ubuntu代号(trustyle
)。在版本号的末尾添加一个自定义标签,如pagespeed
,前面加一个连字符,如下所示:
1[label changelog]
2nginx (1.4.6-1ubuntu3.3-pagespeed) trusty-proposed; urgency=medium
Step 3 -使用Pagespeed模块构建并安装Nginx
现在您已经定制了包含ngx_ages_peed模块的构建,接下来就可以构建nginx了。
使用以下命令进入~/Custom-nginx/nginx-1.4.6/
目录:
1cd ~/custom-nginx/nginx-1.4.6/
从这里,运行命令来构建新的自定义Nginx二进制包:
1sudo dpkg-buildpackage -b
构建过程最多需要大约10分钟。如果您担心在此期间可能会断开连接,您可以尝试使用creen
,如This article.]中所述
如果您已按照所有说明进行操作,则构建过程应该会完成,不会出现任何错误。要找到新的自定义Nginx包,请使用以下命令转到一个目录~/Custom-nginx/
:
1cd ~/custom-nginx/
列出~/Custom-nginx/
目录中的内容:
1ls ~/custom-nginx/
你会发现很多.deb包。你需要的是nginx-common_1.4.6-1ubuntu3.3-pagespeed_all.deb
(包含常用的Nginx文件)和nginx-light_1.4.6-1ubuntu3.3-pagespeed_amd64.deb
(包含你的自定义light服务器)。如果您在changelog
文件中指定了不同的自定义标记,pagespeed
部分可能会有所不同。
要安装带有页面速度模块的定制Nginx,请运行以下命令:
1sudo dpkg -i nginx-common_1.4.6-1ubuntu3.3-pagespeed_all.deb nginx-light_1.4.6-1ubuntu3.3-pagespeed_amd64.deb
第四步-开启Pagespeed模块
现在,您已经安装了Nginx。下一步是启用ngx_ages_peed模块。
在启用该模块之前,您必须创建一个文件夹,它将在其中缓存您网站的文件:
1sudo mkdir -p /var/ngx_pagespeed_cache
请确保将此文件夹的所有权更改为Nginx用户,以便Web服务器可以在其中存储文件:
1sudo chown -R www-data:www-data /var/ngx_pagespeed_cache
然后,在您喜欢的文本编辑器中打开主Nginx配置文件nginx.conf
,如下所示:
1sudo nano /etc/nginx/nginx.conf
在此文件中,将以下行添加到HTTP
块中并保存更改:
1[label /etc/nginx/nginx.conf]
2##
3# Pagespeed Settings
4##
5
6pagespeed on;
7pagespeed FileCachePath /var/ngx_pagespeed_cache;
您可以在Http
块中的任何位置添加这些行,但在我们的示例中,我们将其添加到块的末尾。
/etc/nginx/nginx.conf
文件现在应该是这样的:
1[label /etc/nginx/nginx.conf]
2...
3http {
4
5 ##
6 # Basic Settings
7 ##
8
9 sendfile on;
10 tcp_nopush on;
11 tcp_nodelay on;
12 keepalive_timeout 65;
13 types_hash_max_size 2048;
14 # server_tokens off;
15
16 # server_names_hash_bucket_size 64;
17 # server_name_in_redirect off;
18
19 ##
20 # Pagespeed Settings
21 ##
22
23 pagespeed on;
24 pagespeed FileCachePath /var/ngx_pagespeed_cache;
25...
另外,您需要在/etc/nginx/ites-available
中的_EVERY_server
块文件中添加分页速度配置行。例如,编辑/etc/nginx/ites-available/default
文件:
1sudo nano /etc/nginx/sites-available/default
在server
块的末尾添加以下内容:
1[label /etc/nginx/sites-available]
2# Ensure requests for pagespeed optimized resources go to the pagespeed
3# handler and no extraneous headers get set.
4location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" { add_header "" ""; }
5location ~ "^/ngx_pagespeed_static/" { }
6location ~ "^/ngx_pagespeed_beacon" { }
上面的页面速度配置行确保页面速度将优化每个站点的资源。
最后,重启Nginx服务器以使更改生效:
1sudo service nginx restart
Step 5-测试安装
要检查是否已成功安装ngx_pagespeed模块,请按如下方式运行nginx二进制文件:
1sudo /usr/sbin/nginx -V
如果安装成功,您应该会看到NGX_Pagespeed模块列在其他模块中:
1[secondary_label Output]
2nginx version: nginx/1.4.6
3...
4--add-module=/home/your_user/custom-nginx/nginx-1.4.6/debian/modules/ngx_pagespeed
上述情况并不意味着页面速度已启用并适用于您的站点。要确认这一点,您可以使用curl
,这是一个用于客户端URL传输的工具和库。如果您还没有安装curl
,请使用以下命令进行安装:
1sudo apt-get install curl
之后,检查X-Page-Speed
标题,如下所示:
1curl -I -p http://localhost| grep X-Page-Speed
如果ngx_ages_peed模块运行良好,您应该会在输出中看到它及其版本:
1[secondary_label Output]
2X-Page-Speed: 1.9.32.6-7321
如果您没有看到此标题,请确保您已按照上一步中的说明启用了分页速度。
Step 6 - Pin自定义Nginx包
为了防止您的自定义Nginx包在将来被更新版本的Nginx的apt替换,您应该通过以下步骤来固定(保持)您的包:
在/etc/apt/parences.d
中创建新的nginx
文件:
1sudo nano /etc/apt/preferences.d/nginx
然后将以下行粘贴到其中并保存:
1[label /etc/apt/preferences.d/nginx]
2Package: nginx-light
3Pin: version 1.4.6-1ubuntu3.3-pagespeed
4Pin-Priority: 1001
请确保指定您已决定使用的Nginx包。在我们的示例中,它是nginx-light
。另外,请指定确切的版本以及您的自定义标签,如1.4.6-1ubuntu3.3-pagespeed
。
结论
这就是如何使用定制模块Pagespeed构建Nginx的方法。这些步骤对Nginx中尚未提供的任何其他模块都有效。此外,从源代码安装软件包的整个过程与您可能需要定制的其他软件包类似。但不要忘记,当有新版本时,您将不得不自己维护和重新安装这些包。