使用 Digital Ocean LEMP Ubuntu 16.04 安装,其中一个站点为 example.com。访问http://example.com正常工作。
使用以下方式安装 Let's Encrypthttps://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04成功且没有遇到任何错误。
参观时https://example.com浏览器显示“example.com 拒绝连接。”
当没有看到任何错误时,诊断 Let's Encrypt 问题的最佳步骤是什么?
需要注意的是,在 /var/etc/nginx/sites-available/ 中有“default”和“digitalocean”。默认包含“www.example.com 和 example.com”。但在安装前或安装后均未看到任何与 Let's Encrypt 相关的行。我原以为 LE 安装会使用 LE 行更新该配置。“digitalocean”配置也没有更改。在 /var/log/nginx/error.log 中未看到任何错误。
运行时,“sudo lsof -iTCP -sTCP:LISTEN -P”提到在 22 和 80 上监听的项目,但没有说 443。运行“sudo ufw status”显示 443 允许和“443 (v6)”、“Nginx Full (v6)”等。
想知道是否有人可以建议如何开始诊断该问题?
更新:恢复到安装前的快照并重试。这次发现一个新错误:“找不到与域 example.com 匹配的 VirtualHost。为了让 Certbot 正确执行质询,请在您的 nginx 配置中添加相应的 server_name 指令:https://nginx.org/en/docs/http/server_names.html“
这显然会导致问题,但在 /etc/nginx/sites-available/default 中存在“server_name example.com www.example.com;”,并且如前所述,http 站点加载没有问题。为什么 Let's Encrypt 看不到它?
答案1
在我的搜索中,发现许多其他人遇到了同样的问题,并最终找到了一篇有解决方案的帖子。
DigitalOcean 创建了一个特殊配置,似乎应该使用“DigitalOcean”而不是“Default”。这让我很困惑,因为我一直在使用“Default”。但仔细检查后发现,虽然两者都在 /etc/nginx/sites-available 中,但只有“DigitalOcean”在 /etc/nginx/sites-enabled 中,这解释了为什么它不起作用。我将对 Default 所做的更改应用到 DigitalOcean 配置中,现在一切正常!希望这对遇到同样问题的人有所帮助。