如何使用 django 服务 HTTP/2 协议

Posted

技术标签:

【中文标题】如何使用 django 服务 HTTP/2 协议【英文标题】:How to server HTTP/2 Protocol with django 【发布时间】:2018-12-15 22:48:36 【问题描述】:

我计划使用 HTTP/2 协议部署我的 Django 应用程序,但我找不到合适的解决方案。如何使用 HTTP/2 为我的 Django Web 应用程序提供服务,我发现的唯一内容是 hyper-h2。

我阅读了文档但无法设置连接。

【问题讨论】:

【参考方案1】:

一种选择是使用带有 mod_wsgi 的 Apache httpd 服务器。 Apache 支持终止 HTTP/2。到您的 Django 应用程序的链接仍然是通过 WSGI API,因此您实际上无法访问应用程序中的 HTTP/2 特定功能。您可以将 Apache 配置为代表您执行服务器推送等操作。

https://httpd.apache.org/docs/2.4/howto/http2.html https://httpd.apache.org/docs/2.4/mod/mod_http2.html

【讨论】:

同意,不需要一直说下去:***.com/questions/41637076/…【参考方案2】:

你可以使用 nginx 代理

如果你有现有的 nginx 配置。您只需添加一个单词 .http2 in listen

    listen 443 ssl http2 default_server;

完整文档可在

中找到

https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-with-http-2-support-on-ubuntu-16-04

【讨论】:

知道gunicorn不支持http2,这样就够了吧? 应该足够了,因为 Nginx 将在这里终止连接,并将通过另一个内部设置的协议/通道与 gunicorn 连接。【参考方案3】:

为了支持 HTTP 2.0,您可以使用 ASGI(它是 WSGI 的精神继承者)在像 Daphne 这样的 Web 服务器上部署 Django 应用程序。

您可以在official documentaion 中阅读有关使用 ASGI 部署 Django 的更多信息

要了解更多关于 ASGI 及其内容的信息,introduction to ASGI 阅读更多关于 Daphne 服务器的信息,official repository

【讨论】:

以上是关于如何使用 django 服务 HTTP/2 协议的主要内容,如果未能解决你的问题,请参考以下文章

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

websocket之django简单使用

Django+Uwsgi+Nginx部署

Django+uwsgi+Nginx上线最佳实战

网络推送协议如何工作?

第52篇 WEB框架原理 Django安装与项目的创建