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模块方法。很多朋友对服务器优化非常有兴趣,不妨试试:
- 1、谷歌产品:主机优化加速mod_pagespeed和ngx_pagespeed安装使用
- 2、脸谱产品:HHVM安装使用教程-高效的PHP运行环境提升PHP性能9倍以上
- 3、前后端:配置Nginx前端Apache后端服务器LNMPA-与LNMP,HHVM性能比拼
Nginx和Apache上安装SPDY模块-减少SSL连接时间加快网站加载速度
1、SPDY 官方:
- 1、官方网站:https://code.google.com/p/mod-spdy/
2、SPDY是运行在SSL基础上的,因此你需要先为你的网站安装一个SSL证书,实现Https访问。如果已经购买Godaddy SSL证书的话,参考:
3、当然你也可以使用免费SSL证书,目前被各大浏览器和操作系统所认可的免费SSL证书当属StartSSL,申请和安装方法:
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
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
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;
...}
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
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博客。
5、如下使用SPDY加载的WordPress博客。
6、如下使用SPDY加载的Discourse论坛。(注:Discourse安装SSL方法:Discourse用CDN加速,搬家,换域名,SSL加密,插件和第三方账号登录设置)
1、实际测试中,未使用Spdy前,SSL对Ghost博客的Ajax加载有一定影响。切换页面的时候由于速度明显变慢了,导致原本页面顶部十分自然的HTML5进度条失效,而变为浏览器自身的“加载中”状态。
2、Spdy安装后,Ghost博客Ajax效果全部恢复正常,页面等待时间明显减少。SPDY成功启用后,可以在Chrome或者Firefox安装插件来检测是否成功加载,或者打开chrome://net-internals/#spdy查看。
文章出自:免费资源部落 部分内容来自hjc.im博主投稿 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。
您或许对下面这些文章有兴趣: 本月吐槽辛苦排行榜
-
很不错的样子~
[回复] -
沙发
[回复] -
其实吧,要想再快一点可以备个案~~~速度妥妥的
[回复]David Huang 回复:
@伊犁的秋天, 如果打开一个网页,上面有N多元素需要HTTP加载,那么SPDY用的时间是会短于HTTP的。但是如果你的服务器掉包率特别大,就千万不要用SPDY。
[回复] -
今天簽到啦!時間:下午6:57:59~歡迎訪問AREFLY.COM~~
[回复] -
这个不错啊
[回复] -
每日打卡,打卡时间:下午8:09:00
[回复] -
看到SPDY我第一个想到的就是sha@dowsoW#cks
[回复] -
学习一下吧
[回复] -
没看懂是干嘛用的
[回复] -
后排。现在不需要
[回复] -
後排
[回复] -
没有vps的只能飘过了,在VM上试试了
[回复] -
對SSL無愛了
[回复] -
虽然没怎么看懂,但感觉很厉害的样子啊!
[回复] -
小网站还用不到
[回复] -
目前用免空用不着
[回复] -
经常来这里学习!
[回复] -
我投稿的地方有一个部分现在已经失效了,需要改一下
克隆源代码的部分,由于维护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;才行。
[回复] -
另外
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文件改了名字的,抱歉我的文章里这么多问题。。[回复] -
好东西,回头试试去。。。
[回复] -
我是来看我头像的。。
[回复] -
加快网页势在必行哈,
[回复] -
nginx的spdy实现现在还不支持server push
[回复] -
还用1.0.1h。。。抓紧换1.0.1i
[回复]