我如何使用let';在django应用程序后面加密而不停止服务器?

我如何使用let';在django应用程序后面加密而不停止服务器?,django,lets-encrypt,Django,Lets Encrypt,我有一个django应用程序在服务器上运行。我想使用let's encrypt提供加密连接。我可以使用ACME客户端的独立选项,但我不想停止我的服务器,我必须这么做 因此有一个webroot选项,它与我的allready运行的webserver(nginx)一起工作。在这种情况下,Django将处理请求。我的问题是,在django端运行该应用程序应该是什么样子(记住几个月的自动更新)?我不知道其他人使用什么设置,但我通常使用Nginx提供静态内容,Gunicorn作为应用程序服务器来设置djan

我有一个django应用程序在服务器上运行。我想使用let's encrypt提供加密连接。我可以使用ACME客户端的独立选项,但我不想停止我的服务器,我必须这么做


因此有一个webroot选项,它与我的allready运行的webserver(nginx)一起工作。在这种情况下,Django将处理请求。我的问题是,在django端运行该应用程序应该是什么样子(记住几个月的自动更新)?

我不知道其他人使用什么设置,但我通常使用Nginx提供静态内容,Gunicorn作为应用程序服务器来设置django应用程序。人们普遍认为Django应用程序通常使用这种两个web服务器的设置。使用Nginx设置Let's Encrypt的标准说明对我来说很好

或者数字海洋也有很好的发展前景


编辑:看起来Nginx可以进行“优雅”的重新加载,只更新配置而不停机。对于Debian或UbuntuPre-Systemd,这将是
sudo service nginx reload
,而对于带有Systemd的发行版,命令是
sudo systemctl reload nginx.service
如果其他用户像我从谷歌来的那样,我是如何改进这种情况的:

在运行
Django
应用程序时,让我们进行加密,在创建
ACME
挑战时,我对自己的选择感到不满意。基本上,您可以将
ACME
挑战作为另一个对象进行管理,应用程序将生成正确的端点URL

是的,您正在安装一个应用程序,这意味着要部署/更新您的应用程序,但一旦安装完毕,从长远来看,管理您的挑战要容易得多


只需简单地按照说明进行操作。

您应该能够配置web服务器(如Apache或Nginx)来提供所需的文件。您知道Nginx如何做到这一点吗?在我的例子中,nginx将请求转发到我的gunicorn套接字。添加一个位置块,以便nginx提供所需的文件,而不是将请求转发到gunicorn。Matthew链接的指南有说明。我使用nginx和gunicorn。我知道这本指南,也用过一次。但是如果使用独立选项,则需要停止正在运行的应用程序。我稍微修改了一下我的问题。希望现在能更好地理解它。我使用了指南中描述的webroot插件。这对我来说很好。但是我必须停止运行我的Web服务器。我想缓解这种情况。除非您有多台服务器和负载平衡,或者在Nginx前面已经有类似Varnish的东西,否则就不需要重新启动Nginx。由于重新启动Nginx而导致的一两秒钟停机对于大多数web应用程序来说都不是什么大问题。使用webroot插件所需要做的就是向Nginx添加一条路由以提供该文件。为此,您必须重新启动Nginx。如果您在Nginx前面有负载平衡或类似Varnish的东西,那么在您重新启动Nginx时,它可以继续提供服务。我试过你的项目,但没什么问题。如何设置“ACME请求”和响应?是否有任何演示或示例?请求似乎不应该是静态对象,对吗?嗨@TonyWang!请检查示例项目,如果您真的认为发现了bug,请使用
GitHub
issues。但是简单的应用程序和自述应该可以让你走得更远。示例项目: