web-dev-qa-db-fra.com

Exécuter gunicorn sur https?

Nous avons quelques Django configurations qui passent par un proxy (Apache et Nginx) qui finissent par se diriger vers le véritable Django runtime).

Nous devons avoir le HTTPS de bout en bout, même une fois qu'il est dans notre réseau. Nous avons revisité Gunicorn en raison de son succès et de ses performances dans nos autres configurations, mais nous devions tester de bout en bout HTTPS pour être cohérent.

Notre topologie est en tant que telle:

https://foo.com -> [proxy accessible au public] -> (https) -> [serveur interne https: // 192 ...: 8001]

Comment configurer Gunicorn pour écouter sur HTTPS avec un certificat auto-signé?

34
dmyung

Gunicorn prend désormais en charge SSL, à partir de la version 17. . Vous pouvez le configurer pour écouter sur https comme ceci:

$ gunicorn --certfile=server.crt --keyfile=server.key test:app

Si vous utilisiez --bind pour écouter sur le port 80, n'oubliez pas de changer le port en 443 (le port par défaut pour les connexions HTTPS). Par exemple:

$ gunicorn --certfile=server.crt --keyfile=server.key --bind 0.0.0.0:443 test:app
65
GregM

Réponse massivement tardive, mais pour toute autre personne rencontrant ce problème, il existe une autre option utilisant nginx comme "[proxy accessible au public]" ci-dessus.

Configurez nginx pour gérer le trafic SSL entrant sur le port 443, puis proxy_pass vers gunicorn sur un port interne. Le trafic externe est crypté et le trafic entre nginx et gunicorn n'est de toute façon pas exposé. Je trouve cela très simple à gérer.

17
mafrosis