letsencrypt django webroot

时间:2016-03-12 17:25:04

标签: django nginx

我正在尝试设置我的nginx和django以便能够续订证书。 但是我的webroot-plugin出了点问题

在nginx中:

location ~ /.well-known {
    allow all;
}

但是当我运行续订命令时:

./letsencrypt-auto certonly -a webroot --agree-tos --renew-by-default --webroot-path=/home/sult/huppels -d huppels.nl -d www.huppels.nl

然而,似乎证书续订想要从我的服务器检索文件,因为我收到以下错误。

服务器报告了以下错误:

授权程序失败。 www.huppels.nl(http-01):urn:acme:错误:unauthorized ::客户端缺乏足够的授权::来自http://www.huppels.nl/.well-known/acme-challenge/some_long_hash的响应无效[51.254.101.239]:400

如何使用nginx或django实现这一目标?

1 个答案:

答案 0 :(得分:14)

我的Django应用程序运行着gunicorn。我按照here的说明进行操作。

我确保包含正确的位置块:

location /static  {
    alias /home/user/webapp;
}

location / {
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

确保包含任何模板位置别名。

我像这样设置了.well已知的位置块;

location /.well-known {
    alias /home/user/webapp/.well-known;
}

指向它直接执行webapp的根,而不是使用allow all。

我确实必须确保在生成证书之前我只使用了非ssl块然后我使用了基于h5bps nginx配置的不同nginx配置。

注意:如果您打算使用h5bp重定向到www,请确保您的域名指向适当的A记录。