如何使用 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_wsgi
和mod_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 应用程序提供服务?的主要内容,如果未能解决你的问题,请参考以下文章