让“www”在 Discourse 中正常工作

不,无需额外安装。

此外,我唯一需要添加的代码块是:

  after_ssl:
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--keylength/
        to: "-d mywebsite.org --keylength"

(HTTP 到 HTTPS 的重定向似乎在没有另外两个带有 nginxreplace 块的情况下也能正常工作。)

2 个赞

所以我终于有时间来完成“使用多个域名设置 Let’s Encrypt

1 个赞

免费实施,即使 Cloudflare 不是您的注册商。支持 HTTPS,在您的 Discourse 安装中无需额外复杂性。

谢谢,我目前尚未使用 Cloudflare,因此之前未曾接触过这些。我选择了另一条路径,并参考了上述指南,基本解决了我的问题。你发帖的时候,我刚好提交了上面的 回复

请查看 这个网站;它是否包含你所需的所有重定向?它仅通过一个 replace 块(见上文)和此 DNS 设置完成(我仅对电子邮件 TXT 记录进行了脱敏处理):

我在控制台中没有收到任何警告。

是的,只需准备好当 Let’s Encrypt 配置变更时可能会出问题。

当 Let’s Encrypt 更新以支持椭圆曲线时,你上面依赖的方法曾中断了几周。

1 个赞

唯一的区别是我在 DNS 中没有 CAA 记录。我会使用您使用的相同值添加它。

我假设您的 Discourse 主机名是 www.example.com,您确定访问 https://example.com 时不会收到警告吗?

在 Android 上的 Chrome 中,这个警告更为严重,它会完全阻止访问该网站,并且不会进行重定向。

你把我搞糊涂了 :slight_smile: 我需要留意什么,或者要准备好修复什么?

正确。

是的,我确定,控制台里没有警告。

我想我找到问题了,我之前是这样写的:

after_ssl:
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--keylength/
        to: "-d example.com -d www.example.com --keylength"

而正确的写法应该是:

after_ssl:
    - replace:
        filename: "/etc/runit/1.d/letsencrypt"
        from: /--keylength/
        to: "-d example.com --keylength"

注意最后一行,我之前包含了 example.comwww.example.com

我还把 return 301 https://$host$request_uri; 改成了 return 301 $scheme://$host$request_uri;,重新构建后看起来已经可以正常工作了。

现在我唯一担心的是 @Stephen 提到的,如果 letsencrypt 的配置发生变化,可能会导致问题。

3 个赞

去年9月9日的一次变更打破了您正在遵循的方法,由于该实现超出了标准安装范围,因此直到10月31日才发布解决方案。如果您查看您遵循的主题以及维基上的编辑历史,可以清楚地看到相关记录。

由于您并不需要深入进行额外的配置,因此我建议不要这样做。另一方面,当 Let’s Encrypt 确实发生变更且您受到影响时,我们可以将您引回此主题。

1 个赞