/ Ios

让 Nginx SPDY 和 iOS 交朋友

SPDY 这个东西非常酷,昨晚和朋友聊着天突然提到这个东西,就决定给我家 Server 以及 iOS 和 Android 客户端都上一下这个高大上的技术。

Nginx

Nginx 从 1.5.10 开始实现了 draft 3 of SPDY 在 Ubuntu 上直接添加了 Nginx 官方的 development PPA 源,升级后(如果是编译安装的话,请编译时候加 —with-http_spdy_module)就可以支持 SPDY。

你可以通过 nginx -V 这个命令,来看下编译参数有没有 —with-http_spdy_module

配置上来说其实是很简单的,但是 iOS 有个问题,所以我们需要另外指定个端口,这里我选择了 4443 来做 SPDY 和iOS的传输。

server {
    #dedicated port for iOS aka CocoaSPDY
    listen  4443 spdy;
    #port for web browser
    listen  443 ssl spdy default_server;
    #say we support spdy v3
    add_header Alternate-Protocol  443:npn-spdy/3;
    #compress header when spdy
    spdy_headers_comp 1;
}
```nginx

<h3>CocoaSPDY</h3>

<p>其实这里就解决了最大的问题,SPDY 因为是传输二进制,所以本身就是加密的,iOS上我们因为有 Twitter 开源出来的 <a href="https://github.com/twitter/CocoaSPDY">CocoaSPDY</a></p>

<p>根据介绍可以很轻松的使用起来</p>

```objectivec
[SPDYURLConnectionProtocol registerOrigin:@"http://xxx.com:4443"];

记得要将全部 API 请求都使用 http://xxx.com:4443 这样就可走 SPDY 了。

昨晚因为配置 4443 端口的时候开了 ssl,所以一直没成功,今天 Kgen 跟我说不需要加 ssl,才恍然大悟,非常感谢。

Written with StackEdit.