升级 Discourse 到 3.5.0.beta8-dev 后出现 Cloudflare 521 错误

大家好,

在将我的 Discourse 站点更新到 3.5.0.beta8-dev 后,通过 Cloudflare 访问站点时突然出现 521 “Web 服务器已关闭”错误。这出乎我的意料,因为我之前是按照本指南配置的,并且在此之前一直运行良好。

然后我尝试将 Cloudflare 中的 SSL/TLS 加密模式从 **完全(严格)**更改为 灵活,站点又重新加载了。

有人知道为什么更新后会出现这种情况吗?
3.5.0.beta8-dev 中是否有任何可能影响 Cloudflare 兼容性或 HTTPS 处理的新内容?

非常感谢任何帮助或建议!

提前致谢!

我运行的是 3.5.0.beta8-dev,启用了 Cloudflare 的 Full (strict) SSL,没有遇到任何问题。

有几件事需要检查:

  • 检查您的 Let’s Encrypt - 查看您的升级日志并验证所有内容是否已正确重建。
  • 检查是否有任何外部防火墙更改(DigitalOcean 提供外部防火墙)

521 和切换到 Flexible 表明您的服务器未配置 HTTPS。

感谢您的建议!@LotusJeff

我检查了我的 SSL 设置,我没有使用 Let’s Encrypt,我从 Cloudflare 生成了 源证书,并将密钥和证书放在这里:

检查后我进行了完全重建。但当 Cloudflare 设置为 Full (Strict) 时,我仍然收到 521 错误。

供参考,这是我 app.yml 中的模板部分:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  ## 如果您想添加 Let's Encrypt (https),请取消注释这两行
  - "templates/web.ssl.template.yml"
  # - "templates/web.letsencrypt.ssl.template.yml"
  - "templates/cloudflare.template.yml"

expose:
  - "80:80"   # http
  - "443:443" # https

再次感谢您花时间提供帮助!

根据记忆,Cloudflare 证书的有效期为 90 天。这将要求您每 3 个月创建一次新证书。您还记得您的证书有多久了吗?

默认设置为使用 Let’s Encrypt。系统将为您自动续订证书。少了一件需要手动管理的事情。

Cloudflare 现在提供有效期长达 15 年的证书,我的证书仍在有效期内。

话虽如此,为了确保万无一失,我还尝试生成了一个新证书并替换了现有证书,但问题依旧存在。

如果我想切换回使用 Let’s Encrypt 的默认设置,

仅仅需要:

  1. 取消注释 app.yml 中的这一行:
- "templates/web.letsencrypt.ssl.template.yml"
  1. 并将 Cloudflare 的 SSL 模式设置为 Full?

我从未从私有证书过渡到 Discourse 的 Let’s Encrypt,话虽如此……

在 app.yml 中,您需要在两个位置取消注释:

  1. 模板行 - "templates/web.letsencrypt.ssl.template.yml"
  2. Let’s Encrypt 账户电子邮件:
    ## 如果您添加了 Let's Encrypt 模板,请取消注释下方以获取免费 SSL 证书
      LETSENCRYPT_ACCOUNT_EMAIL: <在此处添加您的电子邮件地址>
    
    如果您对自定义 SSL 证书的模板进行了任何其他手动更改,则需要将其恢复为标准设置。

Let’s Encrypt 组件位于重建应用程序的末尾。留意它,看看是否收到任何错误代码。

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.