How to server HTTP/2 Protocol with django
Asked Answered
A

3

21

I am planing to deploy my Django application with HTTP/2 protocol but I'm unable to find the proper solution. How can I serve my Django web application with HTTP/2, the only thing that I find is hyper-h2.

I read the documentation but unable to setup the connections.

Auriferous answered 7/7, 2018 at 17:25 Comment(0)
P
15

You can do with Nginx proxy

if you have existing nginx config. you do by just adding a word .http2 in listen

    listen 443 ssl http2 default_server;

full document avaliable in

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

Preacher answered 9/12, 2019 at 6:19 Comment(3)
Knowing that gunicorn doesn't support http2, this can be enough ?Mohican
Should be enough as Nginx is going to terminate the connection here and will connect with gunicorn via another internal set protocol/channel.Calvo
Setting http2 in listen is deprecated in nginx 1.25+. Use http2 on; on the next config line instead.Settling
C
5

One option is to use Apache httpd server with mod_wsgi. Apache supports terminating HTTP/2. The link to your Django application is still via WSGI API so you don't really get any access to HTTP/2 specific features in your application. You can though configure Apache to do things like server push on your behalf.

Cavanaugh answered 7/7, 2018 at 21:12 Comment(1)
Agreed and there is little need to speak it all the way through: #41637576Literate
F
4

To support HTTP 2.0, You can deploy Django apps on web servers like Daphne using ASGI (which is the spiritual successor to WSGI).

you can read more about deploying Django with ASGI in the official documentaion

to read more about ASGI and what is it, introduction to ASGI
to read more about Daphne server, official repository

Foolish answered 10/12, 2020 at 11:51 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.