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

PDY是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、官方网站:http://code.google.com/p/mod-spdy/

2、SPDY是运行在SSL基础上的,因此你需要先为你的网站安装一个SSL证书,实现Https访问。

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

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

1、如果是LNMP一键包用户,可以利用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 http://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;
...}

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

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

wget http://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 http://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配置都是在....中间,关闭: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权限执行,省掉每一步的sudoapt-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论坛。

六、SPDY安装与使用小结

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

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

还没有评论,快来抢沙发!

发表评论

  • 😉
  • 😐
  • 😡
  • 😈
  • 🙂
  • 😯
  • 🙁
  • 🙄
  • 😛
  • 😳
  • 😮
  • emoji-mrgree
  • 😆
  • 💡
  • 😀
  • 👿
  • 😥
  • 😎
  • ➡
  • 😕
  • ❓
  • ❗
  • 70 queries in 0.427 seconds