使用 Let's Encrypt 设置多个域名 / 重定向

不太可能。这属于你可能只做一次的事情,而且你会在已经修改 app.yml 时进行。

我会尝试为 standalone.yml 提交一个 PR。

有了这个之后,就简单多了!

4 个赞

谢谢,我一直在本地修改 templates/web.letsencrypt.ssl.template.yml,但这让我的生活变得轻松多了!

1 个赞

我们需要在此包含(原始)主机名,还是仅包含别名?

只需别名。主机名就是主机名。

1 个赞

那么这样可以吗?

env:
  DISCOURSE_HOSTNAME: domain.com
  DISCOURSE_HOSTNAME_ALIASES: www.domain.com,otherdomain.org,www.otherdomain.org
1 个赞

在哲学上纠结于“别名”的含义,我包含了两个都指向我网站的网址:nzarchitecure.net.nzwww.nzarchitecture.net.nz,没有明显的不良影响(也可能没有任何好处)。

1 个赞

standalone.yml 是否可以被修改,或者被配置为读取 Discourse 运行实例中的管理员设置?
如果可以,这将对新用户以及那些希望迁移域或添加别名的人非常有帮助——减少一个需要研究和解决的麻烦。

不可以。如果容器中运行的作业能够更改 app.yml 之类的内容,那将非常糟糕。实际上,一个好的安全实践是将 S3 密钥之类的内容放在 yml 文件中,这样它们就不会在 Discourse 界面中暴露。

同样,您很少会进行诸如需要重定向哪些域之类的更改,而且这些更改需要其他东西,例如 DNS 设置。在设置 Discourse 时进行这些操作,而在设置 Discourse 时,您会修改 yml 文件。

1 个赞

这个问题已经被问过并得到解答,但似乎需要 DISCOURSE_HOSTNAME_ALIASES: domain.com,other.domain.com 而不仅仅是别名,如 DISCOURSE_HOSTNAME_ALIASES: other.domain.com

有人能确认一下吗?

另外,看起来 @pfaffman 的拉取请求(PR)没有被合并,所以示例模板需要手动更改,对吗?

1 个赞

不。这个例子令人困惑。只有额外的名称才需要放在 DISCOURSE_HOSTNAME_ALIASES 中。

除非你需要你的站点拥有另一个名称的证书(比如昨天我将某人从 forum.example.com 迁移到 fancyword.example.com),否则你根本不需要 DISCOURSE_HOSTNAME_ALIASES

所以我做了:

DISCOURSE_HOSTNAME: fancyword.example.com
DISCOURSE_HOSTNAME_ALIASES: forum.example.com

在进行更改之前备份了论坛,进行了更改,重建,恢复了备份(恢复程序会处理修复主机名引用),现在如果你访问 forum.example.com,你会得到一个有效的证书并被重定向到新的子域名。

是的,看起来没有人注意到这个拉取请求(PR)。我总是得去找这个。当然,DISCOURSE_HOSTNAME_ALIASES 是“显而易见的”,但只有当我看到它的时候。:crying_cat:

2 个赞

感谢您的指点 @pfaffman

在我的案例中,我需要这个来实现 AWS CDN 和 AWS S3 CDN 的正确缓存工作

DISCOURSE_HOSTNAME: fancyword.example.com
DISCOURSE_HOSTNAME_ALIASES: cloudfront.example.com

创建多个证书正是我们需要的/ 不幸的是,我们昨天用 certbot 敲击了账户太多次,所以该站点需要“禁闭”。既然您已经确认了 DISCOURSE_HOSTNAME_ALIASES 的正确用法,我将尝试使用另一个站点。

1 个赞

那么你需要在 AWS 上进行操作。

如果你添加另一个别名,它将允许你请求一个新的(除非你做了什么导致整个域名被屏蔽)。

2 个赞

看起来这可能不再需要了。缓存似乎正在工作。我将在 Issues with AWS CDN and S3 上更新详细信息。

1 个赞