想与 Apache 一起运行 Discourse

请确保:

  1. 注释掉 templates 目录(在 app.yml 中)下所有的 SSL 模板。如果您使用 Let’s Encrypt,通常会有两个模板:
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
  1. 添加一个 socket 模板:
- "templates/web.socketed.template.yml"
  1. 注释掉所有暴露的端口:
# - "80:80"   # http
# - "443:443" # https

(或者您也可以暴露其他端口,例如 8080:808443:443,然后在下一步中不使用 socket,而是将请求重定向到指向 localhost:80 和/或 localhost:443 的上游服务。)

  1. 您目前的配置是:
proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock;

我认为您需要在 socket 路径末尾添加冒号 :

proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:;
  1. 您需要在 /var/discourse/shared/standalone/ssl/ 目录下拥有 SSL 证书文件。您有这些文件吗?我假设您已经拥有域名 a1rp.xyz,并且已经在 Let’s Encrypt 网站上了解了如何生成 SSL 证书。另外请注意,在默认安装中,Discourse 会自动为您处理证书续期,但在您的情况下,您需要自行处理(例如使用 cronjob),否则证书将在 3 个月后过期。

参考: