Discourse 续订证书失败

这不正确。

  1. 我在上面的评论中附加的链接来自 git blame。这是该文件的最新版本(相关行已链接):discourse_docker/templates/web.ssl.template.yml at 247c71a1e45d32b0b814a8e9d5fdaa4faaf727b9 · discourse/discourse_docker · GitHub
  2. 我朋友的新站点安装是在一周前。上述模板的第 37 行显示:return 301 https://${DISCOURSE_HOSTNAME}$request_uri; 但在 Discourse Docker 容器中,她(和我的)/etc/nginx/conf.d/outlets/before-server/20-redirect-http-to-https.conf 显示为 return 301 https://\u003cour_discourse_site\u003e; 注意 $request_uri 是如何被移除的。肯定是什么东西导致它消失了!(我不知道是什么)。
  3. 今天早上,我作为调查的一部分进行了一次模拟的强制续订。它失败了。然后我修改了 /etc/nginx/conf.d/outlets/before-server/20-redirect-http-to-https.conf。它成功了!

这实际上没关系;我每次更新 Discourse 时都会手动编辑 20-redirect-http-to-https.conf。对于偶然看到此评论的人,要运行的命令是:

cat > /etc/nginx/conf.d/outlets/before-server/20-redirect-http-to-https.conf << 'EOF'
server {
  listen 80;
  listen [::]:80;

  location ~ /.well-known {
    root /var/www/discourse/public;
    allow all;
  }

  location / {
    return 301 https://\u003cYOUR_FORUM_ADDRESS\u003e$request_uri;
  }
}
EOF

我不太确定是什么导致了这次失败,但我知道修改上面的配置文件可以解决问题。但我还修改了通知设置,这样 letsencrypt 续订就不会再静默失败了——这样我就可以提前得到一些警告。只是想让你知道!

4 个赞