Nginx和Apache上安装SPDY模块-减少SSL连接时间加快网站加载速度

VPS主机   2014年08月02日 17:23  

Nginx和Apache上安装SPDY模块-减少SSL连接时间加快网站加载速度

SPDY是Google开发的基于传输控制协议(TCP)的应用层协议,该协议规定在一个SPDY连接内可以有无限个并行请求,服务器可以主动向客户端发起通信向客户端推送数据,通过请求优化、预加载、压缩HTTP 来达到加速的目的。

对用记而言,SPDY是基于SSL加密,它可以让网络访问更安全,用户隐私更加得到保护。对站长而言,SPDY在降低连接数目的同时,还使服务器上每个客户端占用的资源减少,从释放出更多内存和CPU ,让网站的浏览速度提升不少。

SPDY协议已经被Chrome、Firefox、Opera、IE 11以上支持,用户在访问使用SPDY协议加载的网站几乎感觉不到与普通的Https页面访问有何不同,而SPDY带来的页面加载速度提升和服务器性能优化确是有十分重要意义的。

本篇文章就来分享一下在Nginx和Apache上安装SPDY模块方法。很多朋友对服务器优化非常有兴趣,不妨试试:

Nginx和Apache上安装SPDY模块-减少SSL连接时间加快网站加载速度

一、SPDY安装前的准备工作

1、SPDY 官方:

  • 1、官方网站:https://code.google.com/p/mod-spdy/

2、SPDY是运行在SSL基础上的,因此你需要先为你的网站安装一个SSL证书,实现Https访问。如果已经购买Godaddy SSL证书的话,参考:

3、当然你也可以使用免费SSL证书,目前被各大浏览器和操作系统所认可的免费SSL证书当属StartSSL,申请和安装方法:

二、Nginx上安装SPDY —适用于LNMP一键包

1、如果是LNMP一键包用户(LNMP安装参考:LNMP新版VPS主机控制面板安装),可以利用upgrade_nginx.sh脚本来将SPDY模块编译到Nginx中,方法是打开脚本:vim upgrade_nginx.sh

2、然后在./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6后面加上(注意:“--前面有个空格”):


--with-http_spdy_module --with-openssl=/root/openssl-1.0.1h

SPDY修改配置文件

3、编译最新版本的openssl,将最新版本的openssl下载保存到root下面,如果你放在其它的地方,请把上面的代码的openssl路径也作相应的修改。


wget https://www.openssl.org/source/openssl-1.0.1h.tar.gz
tar zxvf openssl-1.0.1h.tar.gz
cd openssl-1.0.1h
 ./config
 make

SPDY安装最新的OpenSSL

4、最后,你只需要执行LNMP的nginx升级脚本:./upgrade_nginx.sh,就可以实现将新版的OpenSSL和SPDY编译到nginx了。

5、更改您的 nginx 配置文件,cd /usr/local/nginx/conf/vhost/,执行:vim www.xxx.conf (XXX是你的站点配置文件),修改 server 节下的 listen 行,并在下面加上 SSL 证书和密钥 配置,类似:


server {
listen 443 ssl spdy;
ssl_certificate server.crt;
ssl_certificate_key server.key;
...}

三、Nginx上安装SPDY —适用于普通Nginx环境

1、如果不是LNMP一键包用户,则可以采用的通用的方法,第一步还是编译最新版本的openssl。


wget https://www.openssl.org/source/openssl-1.0.1h.tar.gz
tar zxvf openssl-1.0.1h.tar.gz
cd openssl-1.0.1h
 ./config
 make

2、第二步是下载新版本的Nginx,将OpenSSL和SPDY编译进去,注意代码中的OpenSSL路径。


mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
 #重命名
service nginx stop #停止
wget https://nginx.org/download/nginx-1.6.0.tar.gz
tar xfz nginx-1.6.0.tar.gz
cd nginx-1.6.0
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-http_spdy_module --with-openssl=/root/openssl-1.0.1h
make
make install
或者
make upgrade

SPDY通用的安装方法

3、make upgrade是用于Nginx升级的,会保留原来的数据,否则请用make install。

4、更改您的 nginx 配置文件,cd /usr/local/nginx/conf/vhost/,执行:vim www.xxx.conf (XXX是你的站点配置文件),修改 server 节下的 listen 行,并在下面加上 SSL 证书和密钥 配置,类似:


server {
listen 443 ssl spdy;
ssl_certificate server.crt;
ssl_certificate_key server.key;
...}

四、Apache上安装SPDY —适用于Apache 2.2

1、该方法来自谷歌官方,要求是Apache 2.2 (≥2.2.4) 和mod_ssl enabled。如果是Debian/Ubuntu,执行:


wget https://dl-ssl.google.com/dl/linux/direct/mod-spdy-beta_current_i386.deb   #32位
wget https://dl-ssl.google.com/dl/linux/direct/mod-spdy-beta_current_amd64.deb   #64位
dpkg -i mod-spdy-*.deb
apt-get -f install

2、如果是CentOS/Fedora,执行:


wget https://dl-ssl.google.com/dl/linux/direct/mod-spdy-beta_current_i386.rpm   #32位
wget https://dl-ssl.google.com/dl/linux/direct/mod-spdy-beta_current_x86_64.rpm   #64位
yum install at  
rpm -U mod-spdy-*.rpm

3、配置模块,如果是Debian/Ubuntu,则是在 /etc/apache2/mods-available 下,而如果是CentOS/Fedora,则是 /etc/httpd/conf.d 下。找到spdy.conf配置文件,打开它就可以对相应的参数进行修改了。

4、spdy.conf配置都是在<IfModule spdy_module>....</IfModule>中间,关闭:SpdyEnabled off,开启:SpdyEnabled on。SpdyMaxThreadsPerProcess n是设置进程数,SpdyMaxStreamsPerConnection n是设置SPDY streams最大字节。

五、Apache上安装SPDY —适用于Apache 2.4

1、本部分内容来自hjc.im博主投稿。按照Google官方提供的教程,发现安装时提示依赖Apache2.2,显然是依赖关系有问题。于是决定自己编译。

2、为了确保能够在Apache2.4下工作,可选择第三方的源代码(https://github.com/eousphoros/mod-spdy OpenSSL是1.0.1h版本,没有Heartbleed漏洞)


sudo su(以Root权限执行,省掉每一步的sudo)
apt-get -y install git g++ apache2 libapr1-dev libaprutil1-dev patch binutils make devscripts
git clone -b apache-2.4.7 https://github.com/eousphoros/mod-spdy.git
cd mod-spdy/src
./build_modssl_with_npn.sh
chmod +x ./build/gyp_chromium
make BUILDTYPE=Release

3、这样一来就编译好了mod_ssl和libmod_spdy,它们分别在mod-spdy/src/mod_ssl.so和mod-spdy/src/out/Release/libmod_spdy.so下,将它们复制到Apache2的modules目录(通过apt安装的应该在/usr/lib/apache2/modules/下),并启用module。


echo "LoadModule spdy_module /usr/lib/apache2/modules/libmod_spdy.so" | tee /etc/apache2/mods-available/spdy.load
echo "SpdyEnabled on" | tee /etc/apache2/mods-available/spdy.conf
a2enmod spdy
service apache2 restart

4、再次访问SSL站点,就可以看到是以SPDY加载了。如下使用SPDY加载的Ghost博客。

SPDY博客页面加载

5、如下使用SPDY加载的WordPress博客。

SPDY安装在Wordpress

6、如下使用SPDY加载的Discourse论坛。(注:Discourse安装SSL方法:Discourse用CDN加速,搬家,换域名,SSL加密,插件和第三方账号登录设置

SPDY应用的论坛上

六、SPDY安装与使用小结

1、实际测试中,未使用Spdy前,SSL对Ghost博客的Ajax加载有一定影响。切换页面的时候由于速度明显变慢了,导致原本页面顶部十分自然的HTML5进度条失效,而变为浏览器自身的“加载中”状态。

2、Spdy安装后,Ghost博客Ajax效果全部恢复正常,页面等待时间明显减少。SPDY成功启用后,可以在Chrome或者Firefox安装插件来检测是否成功加载,或者打开chrome://net-internals/#spdy查看。

文章出自:免费资源部落 部分内容来自hjc.im博主投稿 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。

十个便宜VPS主机分享-VPS服务器建站和搭建应用服务体验
购买VPS主机

您或许对下面这些文章有兴趣:                    本月吐槽辛苦排行榜

在这个部落村庄里,已经有36 位神马家族成员冒出泡来在农场开始干活了
  • dying 2

    沙发~~~ :razz:

    外星人源码论坛 回复:

    @dying, 沙发三剑客 还差一个人

    这是农场的第 1 块农田,部落批准 [dying] 在[2014-8-2 17:43]开垦完成.
  • E享乐 5

    很不错的样子~

    这是农场的第 2 块农田,部落批准 [E享乐] 在[2014-8-2 18:02]开垦完成.
  • Y-cy 2

    沙发 :lol: :lol:

    这是农场的第 3 块农田,部落批准 [Y-cy] 在[2014-8-2 18:50]开垦完成.
  • 其实吧,要想再快一点可以备个案~~~速度妥妥的 :twisted:

    qi 回复:

    @伊犁的秋天, 这个在一定程序上可以节省服务器资源。

    David Huang 回复:

    @伊犁的秋天, 如果打开一个网页,上面有N多元素需要HTTP加载,那么SPDY用的时间是会短于HTTP的。但是如果你的服务器掉包率特别大,就千万不要用SPDY。

    这是农场的第 4 块农田,部落批准 [伊犁的秋天] 在[2014-8-2 18:54]开垦完成.
  • 超級efly 17

    今天簽到啦!時間:下午6:57:59~歡迎訪問AREFLY.COM~~ :P

    这是农场的第 5 块农田,部落批准 [超級efly] 在[2014-8-2 18:57]开垦完成.
  • 烟花易冷

    这个不错啊

    这是农场的第 6 块农田,部落批准 [烟花易冷] 在[2014-8-2 19:02]开垦完成.
  • ytf4425 15

    每日打卡,打卡时间:下午8:09:00

    这是农场的第 7 块农田,部落批准 [ytf4425] 在[2014-8-2 20:08]开垦完成.
  • ytf4425 15

    看到SPDY我第一个想到的就是sha@dowsoW#cks

    David Huang 回复:

    @ytf4425, 这个是SPDY的正当用途。。有个sh@d0wspdy的,在掉包率低的VPS上速度特别快。

    这是农场的第 8 块农田,部落批准 [ytf4425] 在[2014-8-2 20:09]开垦完成.
  • Kung 23

    学习一下吧

    这是农场的第 9 块农田,部落批准 [Kung] 在[2014-8-2 20:43]开垦完成.
  • 极雪 15

    没看懂是干嘛用的

    这是农场的第 10 块农田,部落批准 [极雪] 在[2014-8-2 21:17]开垦完成.
  • 若水 16

    后排。现在不需要

    这是农场的第 11 块农田,部落批准 [若水] 在[2014-8-2 21:51]开垦完成.
  • Chun Yu 2

    後排

    这是农场的第 12 块农田,部落批准 [Chun Yu] 在[2014-8-2 23:06]开垦完成.
  • 没有vps的只能飘过了,在VM上试试了

    这是农场的第 13 块农田,部落批准 [何朝城] 在[2014-8-3 07:23]开垦完成.
  • Harry 4

    對SSL無愛了

    这是农场的第 14 块农田,部落批准 [Harry] 在[2014-8-3 09:53]开垦完成.
  • 潮流台 11

    :roll: 虽然没怎么看懂,但感觉很厉害的样子啊!

    这是农场的第 15 块农田,部落批准 [潮流台] 在[2014-8-3 10:28]开垦完成.
  • musk100 6

    小网站还用不到

    这是农场的第 16 块农田,部落批准 [musk100] 在[2014-8-3 14:37]开垦完成.
  • Jason 16

    目前用免空用不着

    这是农场的第 17 块农田,部落批准 [Jason] 在[2014-8-3 14:59]开垦完成.
  • 宅推网

    经常来这里学习!

    这是农场的第 18 块农田,部落批准 [宅推网] 在[2014-8-3 16:11]开垦完成.
  • 能分享点主机和服务器吗

    qi 回复:

    @吴尼玛, 试用评测?

    吴尼玛 回复:

    @qi, 都可以

    qi 回复:

    @吴尼玛, 有发现好的美国或者香港主机吗?

    这是农场的第 19 块农田,部落批准 [吴尼玛] 在[2014-8-3 16:35]开垦完成.
  • 我投稿的地方有一个部分现在已经失效了,需要改一下

    克隆源代码的部分,由于维护2.4.7分支的开发者将master分支的版本切换到了2.4.10,因此2.4.7编译master分支是没有用的,把git clone https://github.com/eousphoros/mod-spdy.git;改成git clone -b apache-2.4.7 https://github.com/eousphoros/mod-spdy.git;才行。

    这是农场的第 20 块农田,部落批准 [David Huang] 在[2014-8-3 22:47]开垦完成.
  • 另外
    echo “LoadModule spdy_module /usr/lib/apache2/modules/mod_spdy.so” | tee /etc/apache2/mods-available/spdy.load
    改为
    echo “LoadModule spdy_module /usr/lib/apache2/modules/libmod_spdy.so” | tee /etc/apache2/mods-available/spdy.load
    写文章的时候没看清楚,我自己是把so文件改了名字的,抱歉我的文章里这么多问题。。

    qi 回复:

    @David Huang, 谢谢,已经更正。

    这是农场的第 21 块农田,部落批准 [David Huang] 在[2014-8-3 23:01]开垦完成.
  • 不认识 17

    好东西,回头试试去。。。

    这是农场的第 22 块农田,部落批准 [不认识] 在[2014-8-3 23:10]开垦完成.
  • YJ 3

    我是来看我头像的。。

    这是农场的第 23 块农田,部落批准 [YJ] 在[2014-8-4 10:36]开垦完成.
  • qiang哥 说一个题外话! 我想在部落 投放一个广告,可以吗? 你的QQ都不在线的说!

    qi 回复:

    @外星人源码论坛, 最近很少在线了。上次有不少的朋友说部落的广告太多了,所以现在暂时不投放了。

    这是农场的第 24 块农田,部落批准 [外星人源码论坛] 在[2014-8-4 18:40]开垦完成.
  • 大图贴吧 4

    加快网页势在必行哈,

    这是农场的第 25 块农田,部落批准 [大图贴吧] 在[2014-8-11 15:39]开垦完成.
  • anson 1

    nginx的spdy实现现在还不支持server push

    这是农场的第 26 块农田,部落批准 [anson] 在[2014-8-31 08:35]开垦完成.
  • bobo 4

    还用1.0.1h。。。抓紧换1.0.1i

    这是农场的第 27 块农田,部落批准 [bobo] 在[2014-10-12 14:57]开垦完成.
看贴要回贴有N种理由!看帖不回贴的后果你懂得的!


评论内容 (*必填):
(Ctrl + Enter提交)   

部落快速搜索栏

各类专题梳理

网站导航栏

X
返回顶部