问题描述
我们有一个包含 3 个服务器的集群,前面有负载均衡器 (CloudFlare)。当集群中有 2 台服务器(A 和 B)时,一切运行良好,但在添加第三台服务器 (C) 后,我们注意到一些奇怪的事情。
其中一个非常重要,我完全不明白它是如何发生的。
我们的 Web 应用程序向自身发出 AJAX 请求以获取一些 JSON 数据,如果请求命中新服务器 (C),响应如下所示:
{
code: 404,text: "Not Found",message: "Database context not allowed."
}
我们的应用程序没有抛出这样的错误,所以我在谷歌搜索了一下,注意到它在:OpenNTF XPagesExtensionLibrary
但是,我们根本不使用 XPage,所以我想知道我们的 AJAX 请求怎么会以某种方式涉及该逻辑。
任何建议和提示将不胜感激。
更新
我的代理的后端代码并不重要(它也可能是一个空代理,我检查过),因为请求没有到达我的代理。
AJAX 调用由 jQuery 触发
let url = "domain.tld/api/key";
let params = {"a": 1};
$.post(url,params,function (data) {
// some code
},"json"
).always(function() {
// some code
});
我怀疑是一个问题的 URL 以 /api/key 开头,我相信这是一个问题(因为所有其他 ajax 调用的端点都不是从 /api/ 开始的)。
谢谢。
解决方法
我们在评论的帮助下(你可以在我的原始帖子下看到)。
显然有 DAS servlet 可以处理从 /api/* 开始的所有请求,并且在加载 XPage 引擎时运行。 就我而言,3 台服务器中有 2 台关闭了 XPage,因此问题仅发生在 1 台服务器上。
解决方案是:
- 关闭 XPage(或找到关闭 DAS 的方法)。
- 或者将 URL 从 /api/path 更改为其他内容(这是我们要做的)。