Apache服务器启用SPDY协议加快传输本博客内容

Apache确实占用资源比较多……嗯,不过博客访问量也不大,还能应付过来。今天看到SPDY的已获得Chrome、Firefox、Opera、IE等众多浏览器的支持,于是萌生念头让博客的https访问使用SPDY协议(不用担心,不支持的会自动fallback到普通https协议)!嗯,没错,SPDY协议是一个全新的加密层传输协议,你的站点得先有SSL证书并能顺利通过普通https访问上!

Apache、Nginx都支持SPDY协议,Apache是通过mod_spdy这个模块来实现的,但是博客使用的是WordPress(PHP内容),需要禁用mod_php改用mod_fcgid来确保PHP的线程安全。下面分享一下做法。

首先安装mod_fcgid模块和mod_spdy模块(从Google Developers下载rpm或deb包安装),以CentOS为例通过:

sudo yum install mod_fcgid
sudo yum install https://dl-ssl.google.com/dl/linux/direct/mod-spdy-beta_current_i386.rpm

然后编辑httpd.conf文件:

vim /etc/httpd/conf/httpd.conf

尾部添加以下几行:

FcgidMaxRequestsPerProcess 2000
<Location />
AddHandler fcgid-script .php
Options +ExecCGI
FcgidWrapper /usr/local/bin/php-wrapper .php
Order allow,deny
Allow from all
</Location>

再编辑/usr/local/bin/php-wrapper(需要新建),内容如下:

#!/bin/sh
PHP_FCGI_MAX_REQUESTS=2000
export PHP_FCGI_MAX_REQUESTS

exec /usr/bin/php-cgi

注意最后一行/usr/bin/php-cgi是php-cgi的完整路径(通过which php-cgi查看在哪里,CentOS通过yum安装的位置在/usr/bin下)。编辑后记得chmod +x添加执行权限

这一步完成之后还需要禁用或者卸载mod_php模块。我把它禁用了,修改/etc/httpd/conf.d/php.conf文件把全部语句都加上#注释掉就可以了。

搞定重启httpd或者让其reload一下。下面来检测是否成功开启了。

Chrome浏览器打开网址:chrome://net-internals/#spdy

新建一个标签页打开你的网站(通过https),再回到chrome://net-internals/#spdy这个标签页,看看session列表里面有没有你的网站了?(本站已开启,如下图所示)

spdy

你还不放心?可以打开https://www.kernel.org,你会发现Kernel.org就没有启用SPDY协议,所以不在列表中。

参考文章: mod_spdy | Using mod_spdy with PHP | mod_fcgid

5 responses to “Apache服务器启用SPDY协议加快传输本博客内容”

  1. Dimpurr avatar

    Android Chrome 报告切回了 https …

    1. librehat avatar

      Android的Chrome好像还不支持SPDY吧,话说我还不知道怎么在Android的Chrome上看SPDY的会话列表,难道也有chrome://这种内部地址?

      1. Dimpurr avatar

        这个的话确实有的,连 chrome://flags 都有,感觉几乎都是把桌面版 Chrome 给移植了过来,所以才会卡的不行吧 ……

      2. Dimpurr avatar

        刚刚试了下,在 chrome://chrome-urls/ 可以查看所有内部地址,同样也有 chrome://net-internals/#spdy 这个页面,显示的是 SPDY Enable: True ,不过没在底下的列表里看到 librehat.com 的个说 ……

        1. librehat avatar

          嗯,Android的Chrome支持SPDY,我刚在手机上试了一下,可以的啊。你打开librehat.com之后需要刷新chrome://net-internals/#spdy这个页面(好象它不会自动刷新>_<~)。