嗨,Discourse 团队,
我在主机上运行着 nginx 服务器,并部署了一个标准的 Discourse Docker 容器。基本上,我由主机 nginx 服务少量特定的(HTTP)文件夹,其余所有请求则通过 proxy_pass 转发给 Discourse 容器。
就我目前对问题的理解,关键在于:我的主机 nginx 配置文件中定义了一个 /xyz 位置,由主机 nginx 处理;同时定义了一个 / 位置,将其通过 proxy_pass 转发至 Discourse 容器。
在我的使用场景中,我需要在 Discourse 帖子中发布指向 my.domaiin.com/xyz/some.html 的链接,即 Discourse 内部的链接应指向由主机 nginx 服务的页面。
这一功能在最近的 Discourse 更新之前一直正常工作。但现在,点击这些链接会跳转到 Discourse 的“无法找到……"页面。相比之下,复制链接目标并在新标签页中打开则能按预期工作。
我对底层协议有相当程度的了解,但协议栈越往上层,我的知识就越有限 :)。目前我的假设是:Discourse 的 nginx 保持了连接(可能是 keepalive 机制),导致主机 nginx 无法解析新的请求路径以选择正确的服务器。连接中的请求被原样传递给容器并保持存活状态,因此对 /xyz 路径的请求由 Discourse 处理,而它并不知晓该文件夹。
我该如何解决这一问题?如果不存在简单的解决方案,获得一些指引也会很有帮助,哪怕是对 HTTP 协议有较好理解的详细解释也能帮上忙。
谢谢!