如何使用 SPDY 协议为 Django 应用程序提供服务?

Posted

技术标签:

【中文标题】如何使用 SPDY 协议为 Django 应用程序提供服务?【英文标题】:How can I serve a Django application using the SPDY protocol? 【发布时间】:2013-02-01 13:04:40 【问题描述】:

通过 SPDY [1] 协议为 Django 应用程序提供服务的最佳方式是什么?

[1]http://www.chromium.org/spdy

【问题讨论】:

这个问题的附加组件 - 使其适用于 CPython 有没有办法通过结合mod_wsgimod_spdy来使用Apache? 到目前为止,我相信没有。至少在阅读了很多关于这两个的东西之后。有一些方法可以转换为 HTTP,但不知道究竟能从中获得什么。 【参考方案1】:

一种方法是使用 Jetty 在 Jython 上运行 Django - http://www.evonove.it/blog/en/2012/12/28/django-jetty-spdy-blazing-fast/

另外,显然 nginx 有一些 draft module 用于 SPDY

【讨论】:

【参考方案2】:

它适用于 nginx > 1.5.10 和 Django 作为 fastcgi 服务器运行。

Chrome 和 Firefox 的最新版本dropped support for SPDY v2。因此,您至少需要服务器端的 SPDY3 支持。 Nginx versions higher than 1.5.10 支持第 3 版协议。

Django 主线安装

目前(截至 2014 年 2 月)Nginx > 1.5.10 只能从主线分支获得,不能从稳定版获得。在大多数 Linux 发行版上,最容易安装 mainline packages provided by the nginx project。

Nginx 和 Django 配置

Django 文档解释了如何运行Django with Nginx through fastcgi。那里提供的配置可以作为起点。

此外,您需要为您的主机提供 SSL 证书,并通过以下方式扩展 Nginx 配置:

监听配置选项需要修改为: 从listen 80;listen 443 ssl spdy;

您需要添加基本的 ssl 配置选项,最重要的是证书和密钥。

因此,将两种修改结合起来,配置可能如下所示:

server 
    listen       443 ssl spdy;
    server_name  yourhost.example.com;

    ssl_certificate      <yourhostscertificate>.pem;
    ssl_certificate_key  <yourhostskey>.key;
    ssl_prefer_server_ciphers   on;

    location / 
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:8080;
    

然后以fastcgi模式运行你的Django,如下:

python ./manage.py runfcgi host=127.0.0.1 port=8080

测试您的设置

将浏览器指向https://yourhost.example.com 您应该能够验证连接是通过 SPDY 完成的: Chrome:在chrome://net-internals/#spdy 中查找活动的 SPDY 会话 Firefox:检查 Firebug Network 选项卡并查找 X-Firefox-Spdy:"3.1" 响应标头。

【讨论】:

以上是关于如何使用 SPDY 协议为 Django 应用程序提供服务?的主要内容,如果未能解决你的问题,请参考以下文章

如何理解 TCP/IP,SPDY,WebSocket 三者之间的关系

heartbleed 漏洞会影响 SPDY 协议吗?

如何告诉服务器客户端支持 SPDY 协议?

SPDY 协议是不是消除了对无 cookie 域的需求?

浅析SPDY

SPDY 可以在啥级别上使用?