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

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

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

【问题讨论】:

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

标签: django hosting spdy


【解决方案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" 响应标头。

    【讨论】:

      猜你喜欢
      • 2020-08-18
      • 1970-01-01
      • 2020-09-27
      • 2022-08-14
      • 1970-01-01
      • 2012-08-08
      • 2018-12-15
      • 2011-12-08
      • 2022-01-23
      相关资源
      最近更新 更多