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列表里面有没有你的网站了?(本站已开启,如下图所示)
你还不放心?可以打开https://www.kernel.org,你会发现Kernel.org就没有启用SPDY协议,所以不在列表中。
参考文章: mod_spdy | Using mod_spdy with PHP | mod_fcgid
5 responses to “Apache服务器启用SPDY协议加快传输本博客内容”
Android Chrome 报告切回了 https …
Android的Chrome好像还不支持SPDY吧,话说我还不知道怎么在Android的Chrome上看SPDY的会话列表,难道也有chrome://这种内部地址?
这个的话确实有的,连 chrome://flags 都有,感觉几乎都是把桌面版 Chrome 给移植了过来,所以才会卡的不行吧 ……
刚刚试了下,在 chrome://chrome-urls/ 可以查看所有内部地址,同样也有 chrome://net-internals/#spdy 这个页面,显示的是 SPDY Enable: True ,不过没在底下的列表里看到 librehat.com 的个说 ……
嗯,Android的Chrome支持SPDY,我刚在手机上试了一下,可以的啊。你打开librehat.com之后需要刷新chrome://net-internals/#spdy这个页面(好象它不会自动刷新>_<~)。