如何在特定路径上使用 Nginx 作为代理安装 Discourse?

你好。我已经在 Linux 机器上成功安装并运行了 Discourse,使用 Nginx 作为 SSL 终止器,并配置了 proxy_pass 指令。

问题是,目前我只能通过 discourse.example.com 访问,而我希望实现通过 example.com/discourse 访问。我尝试修改 DISCOURSE_HOSTNAME 并直接设置该值,但结果是显示标准的“哎呀,页面未找到”错误页面,且没有任何 CSS 样式。我尝试在源代码和文档中搜索“baseurl”指令(因为其他应用中常以此命名),但没有成功。

这是否可行?如果可行,请提供相关链接说明如何实现。

请跟进 Serve Discourse from a subfolder (path prefix) instead of a subdomain

3 个赞

你查看过 Docker 的子文件夹支持子文件夹中的 Discourse,多台服务器共享一个域名 吗?

1 个赞

好的,‘subfolder’(子目录)是这里的关键词。我完全没想到,谢谢!

顺便一提,这份文档假设我使用的是捆绑的 nginx,而不是我自己的,不过我想我只需要相应地修改我的配置(尤其是 rewrite 行)。

您将同时使用外部 nginx 以及 Discourse Docker 容器内部的内部 nginx。

好的。起初我以为自己没使用任何内部 httpd,因为我没有暴露端口,但——我真傻——我仍然使用了 socket,而它必须连接到某个地方。

所以我得在两者上都使用 rewrite 吗?