请确保:
- 注释掉
templates目录(在app.yml中)下所有的 SSL 模板。如果您使用 Let’s Encrypt,通常会有两个模板:
# - "templates/web.ssl.template.yml"
# - "templates/web.letsencrypt.ssl.template.yml"
- 添加一个 socket 模板:
- "templates/web.socketed.template.yml"
- 注释掉所有暴露的端口:
# - "80:80" # http
# - "443:443" # https
(或者您也可以暴露其他端口,例如 8080:80 和 8443:443,然后在下一步中不使用 socket,而是将请求重定向到指向 localhost:80 和/或 localhost:443 的上游服务。)
- 您目前的配置是:
proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock;
我认为您需要在 socket 路径末尾添加冒号 ::
proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock:;
- 您需要在
/var/discourse/shared/standalone/ssl/目录下拥有 SSL 证书文件。您有这些文件吗?我假设您已经拥有域名a1rp.xyz,并且已经在 Let’s Encrypt 网站上了解了如何生成 SSL 证书。另外请注意,在默认安装中,Discourse 会自动为您处理证书续期,但在您的情况下,您需要自行处理(例如使用 cronjob),否则证书将在 3 个月后过期。
参考: