python-3.x 如何为在Gunicorn上运行的Flask应用获取SSL?

fgw7neuy  于 2023-03-09  发布在  Python
关注(0)|答案(3)|浏览(297)

我在Ubuntu 18.04的Gunicorn上运行了一个Flask应用程序。Gunicorn在端口80上运行。我安装了NGINX,但它没有使用,被禁用了。我能够成功地为NGINX安装cert-bot,但它没有帮助,因为NGINX没有使用,而且它还与80端口上的gunicorn冲突。是否有可能获得专门用于Gunicorn/Flask的SSL证书或可以与它一起工作的东西?SSL和https对于页面是必不可少的。

t9aqgxwy

t9aqgxwy1#

您可以在Gunicorn上使用certbot生成的SSL证书:
1.软件“其他”遵循certbot instructions。注意生成文件的保存位置。
1.运行Gunicorn并使用--keyfile和--certfile选项指定证书和密钥路径。示例:gunicorn --keyfile /some/path/key.pem --certfile /some/path/cert.pem main:app

uqdfh47h

uqdfh47h2#

另一种方法是使用ngrok之类的安全隧道服务。使用ngrok,您可以轻松地从gunicorn服务器通过隧道连接到他们提供的启用https的端点。根据您的目的,这可能是一种方便的解决方法。
它非常非常容易使用--就我个人而言,我觉得nginx对于第一次使用来说有点复杂。
使用ngrok非常简单(安装后):

gunicorn -b 0.0.0.0:4000
ngrok http 4000

这为您提供了一个像https://abcd.ngrok.io这样的安全端点,您可以向其发送请求,就像向gunicorn服务器发送请求一样。
所以http://0.0.0.0:4000/hello变成了https://abcd.ngrok.io/hello

wkyowqbh

wkyowqbh3#

我建议将Gunicorn的端口更改为其他端口,甚至将其绑定到套接字。
然后可以使用Nginx来处理SSL。
Gunicorn提供了大量文档:
https://docs.gunicorn.org/en/stable/index.html

更新

DigitalOcean总是提供非常好的教程:
https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-18-04

相关问题