我们有一些Django设置通过代理(Apache和Nginx),最终到达实际的Django运行时。
我们需要端到端的HTTPS,即使是在我们的网络中。我们一直在重新访问Gunicorn,因为它在我们的其他设置中的成功和性能,但需要测试HTTPS端到端的一致性。
我们的拓扑结构如下:
https://foo.com-〉[面向公众的代理] -〉(https)-〉[内部服务器
如何配置Gunicorn使用自签名证书监听HTTPS?
我们有一些Django设置通过代理(Apache和Nginx),最终到达实际的Django运行时。
我们需要端到端的HTTPS,即使是在我们的网络中。我们一直在重新访问Gunicorn,因为它在我们的其他设置中的成功和性能,但需要测试HTTPS端到端的一致性。
我们的拓扑结构如下:
https://foo.com-〉[面向公众的代理] -〉(https)-〉[内部服务器
如何配置Gunicorn使用自签名证书监听HTTPS?
5条答案
按热度按时间njthzxwz1#
Gunicorn现在支持SSL,as of version 17.0,你可以这样配置它来监听https:
如果使用
--bind
监听端口80,请记住将端口更改为443(HTTPS连接的默认端口)。例如:pjngdqdw2#
大量的延迟回复,但是对于任何其他遇到这个问题的人,还有另一个选择使用nginx作为上面的“[面向公众的代理]”。
配置nginx来处理端口443上的SSL流量,然后在内部端口上配置proxy_pass到gunicorn。外部流量是加密的,nginx和gunicorn之间的流量也不会暴露。我发现这很容易管理。
frebpwbc3#
如果您使用的是gunicorn.config.py或类似的gunicorn配置文件,则可以添加证书文件和密钥文件。
配置文件可用于将设置初始化为env变量,如果您有很多设置,配置文件会很有帮助。
gunicorn.config.py
的文件来创建配置文件当然
查看documentation和配置文件example
要使用这些设置运行gunicorn
因为
默认情况下,gunicorn.conf.py将从运行gunicorn的同一目录中读取名为www.example.com的文件。
5t7ly7z54#
除了
certfile
和keyfile
,你还需要添加ca-certs
。没有通过ca-certs
,我在Android设备上得到了Trust anchor for certification path not found.
。示例命令:
dnph8jn45#
另一种方法是使用
ngrok
之类的安全隧道服务。使用ngrok
,您可以轻松地从gunicorn
服务器通过隧道连接到他们提供的启用https
的端点。根据您的目的,这可能是一种方便的解决方法。它非常非常容易使用--就我个人而言,我觉得
nginx
对于第一次使用来说有点复杂。使用
ngrok
非常简单(安装后):这为您提供了一个像
https://abcd.ngrok.io
这样的安全端点,您可以向其发送请求,就像向gunicorn
服务器发送请求一样。所以
http://0.0.0.0:4000/hello
变成了https://abcd.ngrok.io/hello
。