SPDY(发音为“SPeeDY”)是一种新的网络协议,其目标是加快网络速度。 Google是HTTP协议的替代品,也是HTTP / 2.0的候选者。 SPDY增加了HTTP与多种速度相关的功能,如流多路复用和报头压缩。 要使用SPDY,您需要支持SPDY的Web服务器和浏览器(如Google Chrome和即将推出的Firefox)。 mod_spdy是一个开源的Apache模块,它将对SPDY协议的支持添加到Apache HTTPD服务器。 本教程介绍如何在OpenSUSE 12.2上使用Apache2的mod_spdy。
1初步说明
SPDY通过HTTPS运行,因此我们需要一个支持HTTPS的网站来测试SPDY。 请注意,如果用户的浏览器不支持SPDY或出现问题,SPDY将返回HTTPS,因此安装mod_spdy不会损害您现有的设置。
我假设你有一个工作的LAMP设置,如在OpenSUSE 12.2(LAMP)上使用PHP5安装Apache2和MySQL支持中所述 。
在我们继续之前,我们需要在Apache中启用SSL:
a2enmod ssl
a2enflag SSL
systemctl restart apache2.service
为了测试目的,我将简单地使用OpenSUSE的Apache软件包附带的默认SSL网站(如果您的服务器上已经有一个SSL网站,则不需要这样做)。
为默认SSL vhost创建自签名证书...
openssl genrsa -des3 -out /etc/apache2/ssl.key/server.key.org 4096
openssl req -new -key /etc/apache2/ssl.key/server.key.org -out /etc/apache2/ssl.crt/server.csr
openssl x509 -req -days 365 -in /etc/apache2/ssl.crt/server.csr -signkey /etc/apache2/ssl.key/server.key.org -out /etc/apache2/ssl.crt/server.crt
openssl rsa -in /etc/apache2/ssl.key/server.key.org -out /etc/apache2/ssl.key/server.key
chmod 400 /etc/apache2/ssl.key/server.key
...并启用默认SSL vhost:
cd /etc/apache2/vhosts.d
cp vhost-ssl.template vhost-ssl.conf
systemctl restart apache2.service
转到默认的SSL网站的URL(例如https://www.example.com
)并测试它是否工作(我在这里使用默认的自签名证书,这就是为什么我有证书警告,但是这没有使用SPDY的效果;也不用担心403 Forbidden错误 - 这是因为文档根目录中没有索引文件):
2安装mod_spdy
mod_spdy可以安装如下:
zypper install http://download.opensuse.org/repositories/Apache/openSUSE_12.2/x86_64/apache2-mod_spdy-0.9.1.5-1.1.x86_64.rpm
(不幸的是,在撰写本文时,没有用于i386系统的mod_spdy软件包,因此这只适用于x86_64系统。)
接下来创建mod_spdy配置文件/etc/apache2/conf.d/spdy.conf
:
vi /etc/apache2/conf.d/spdy.conf
LoadModule spdy_module /usr/lib64/apache2/libmod_spdy.so <IfModule spdy_module> # Turn on mod_spdy. To completely disable mod_spdy, you can set # this to "off". SpdyEnabled on # In order to support concurrent multiplexing of requests over a # single connection, mod_spdy maintains its own thread pool in # each Apache child process for processing requests. The default # size of this thread pool is very conservative; you can override # it with a larger value (as below) to increase concurrency, at # the possible cost of increased memory usage. # #SpdyMaxThreadsPerProcess 30 # Memory usage can also be affected by the maximum number of # simultaneously open SPDY streams permitted for each client # connection. Ideally, this limit should be set as high as # possible, but you can tweak it as necessary to limit memory # consumption. # #SpdyMaxStreamsPerConnection 100 </IfModule> |
您可以在https://developers.google.com/speed/spdy/mod_spdy/install上了解有关配置选项的更多信息。
之后重新启动Apache:
systemctl restart apache2.service
3测试
现在我们来测试SPDY是否正常工作。 我们需要一个支持SPDY的浏览器。 例如Google Chrome。 打开Chrome并重新加载您的SSL网站(例如https://www.example.com
) - 重要的是重新加载它,以便它可以使用SPDY(首次在第1章中加载它使用普通的HTTPS)。 之后,打开一个新的标签并输入URL
chrome://net-internals/#spdy
如果一切顺利,您的SSL vhost现在应该列在表中,这意味着SPDY支持正在运行。
(由于SPDY对HTTPS的回退机制,您的SSL vhost仍然可以在不支持SPDY的任何其他浏览器中使用。)
4链接
- SPDY: https : //developers.google.com/speed/spdy/
- Apache mod_spdy: http : //code.google.com/p/mod-spdy/
- mod_spdy配置: https : //developers.google.com/speed/spdy/mod_spdy/install
- Apache: http : //httpd.apache.org/
- OpenSUSE: http : //www.opensuse.org/