Total Pageviews

Thursday, 6 August 2015

nginx下,编译 SPDY

nginx 1.3 开始正式提供了官方的SPDY/2支持,不过由于还在实验阶段,并没有集成到发行包中,需要手动打patch。
UPDATED: 1.4已经内置了支持.

编译步骤:
1、安装 OpenSSL 1.0.1,SPDY需要有 1.0.1 的支持,旧版本无法启用 SPDY
2、下载最新 nginx 1.3.x,例如
     $ wget http://nginx.org/download/nginx-1.3.3.tar.gz
3、解包 nginx 1.3.3
     $ tar xvfz nginx-1.3.3.tar.gz 
     $ cd nginx-1.3.3
4、下载并应用SPDY patch
     $ wget http://nginx.org/patches/spdy/patch.spdy.txt
     $ patch -p0 < patch.spdy.txt
5、配置nginx编译参数
    $ ./configure --with-http_ssl_module 
如果下好了openssl最新源代码,可以指定到源代码路径,进行静态绑定编译(--with-openssl=/path/to/openssl-1.0.1)
6、make && make install
7、修改nginx配置文件,和以往添加SSL证书和SSL服务是一样的,唯一的不同是多了spdy参数。
server {  
listen 443 ssl spdy default_server; 
ssl_certificate 
server.crt; 
ssl_certificate_key  server.key;  
... 
}

更多参数官方说明:http://nginx.org/patches/spdy/README.txt
----------------------------------------------------

Apache2.2搭建SPDY服务器


1、安装apache

sudo apt-get install apache2

2、配置SSL,支持HTTPS

这步的作用是启用SSL模块和令网站支持SSL协议。

cd到 /etc/apache2/sites-enabled ,然后执行

sudo ln -s ../sites-available/default-ssl .

cd到 /etc/apache2/mods-enabled ,然后执行

sudo ln -s ../mods-available/ssl.* .

3、安装mod_spdy

https://developers.google.com/speed/spdy/mod_spdy/下载,我是64bit的,选择

下载后,
sudo dpkg -i mod-spdy-beta_current_amd64.deb

4、重启apache
sudo service apache2 restart

5、验证
用chrome以https协议随便访问一个网页,并打开Network监控台,如果SPDY生效,则会在Headers里看到x-mod-spdy。


注:Debian、Ubuntu的配置方法应该和Linux Mint一样。SPDY是建立在SSL之上。apache2.4不能安装mod-spdy.
-------------------------------------


Nginx 1.5.11搭建SPDY服务器



Apache搭建的SPDY服务器很不爽,因为Apache只能用2.2版本,SPDY也只支持到3,不支持3.1。所以用Nginx好些。

用以下脚本安装:

sudo apt-get install openssl libssl-dev
wget http://nginx.org/download/nginx-1.5.11.tar.gz
tar zxvf nginx-1.5.11.tar.gz
wget http://zlib.net/zlib-1.2.8.tar.gz
tar zxvf zlib-1.2.8.tar.gz
cd nginx-1.5.11
./configure --with-http_ssl_module --with-zlib=../zlib-1.2.8 --with-http_spdy_module
sudo make install
然后打开/usr/local/nginx/conf/nginx.conf

搜索HTTPS server,把下面的行全部取消注释,并为listen参数加上spdy,SSL证书可以填Apache的,或者自己创建。为了让Wireshark能截包,ssl_ciphers可以改成RSA。

    # HTTPS server
    #
    server {
        listen       443 ssl spdy;
        server_name  localhost;

        ssl_certificate      /etc/ssl/certs/ssl-cert-snakeoil.pem;
        ssl_certificate_key  /etc/ssl/private/ssl-cert-snakeoil.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        #ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_ciphers  RSA;
        ssl_prefer_server_ciphers  on;

        location / {
            root   /home/liuhx/xtp/writable/www;
            index  index.html index.htm;
        }
    }
启动:

sudo /usr/local/nginx/sbin/nginx

注:Apache使用的mod_spdy支持server push,nginx还不支持。

参考:

http://dev.meettea.com/show-110-1.html

http://nginx.org/en/docs/http/ngx_http_spdy_module.html

http://nginx.org/en/docs/configure.html