[Solved]-Running Gunicorn on both http and https


Gunicorn is a very solid project, I hope they build it out someday with multiple port binding and command line switch to indicate SSL precedence.

When you finally get in production, you’ll want to use the superior load balancing of Apache or Nginx.

But nothing prevents you (during development) from running some workers bound to port 80 and some workers bound to port 443 with keyfile and certfile set. You could then write the login link as an “absolute” url e.g. href=”https://yoursite/login” after the login, they’d be using https urls.

# put 8 workers as Daemon listening for HTTPS on 443
gunicorn -D -w 8 --certfile=/Projects/thebodyofchrist.us.crt --keyfile=/Projects/thebodyofchrist.us.key bodyofchrist.wsgi -b

# put 2 workers as Daemon listening for HTTP on port 80
gunicorn -D -w 2 bodyofchrist.wsgi -b


Multiple addresses can be bound. ex.:

gunicorn -b -b [::1]:8000 test:app


so you can do this

gunicorn -b :80 -b :443 test:app


Such support can be added inside gunicorn. As the moment it’s not possible.




I would do this with a reverse proxy webservice not directly with uvicorn. So Trafaek and nginx come to mind.

Leave a comment