1

我们有一个网络应用程序,它具有内置的搜索功能,我们的用户可以执行复杂的搜索。这是我们的软件堆栈:

  • 服务器端是 Spring MVC,使用 Struts/JSP 进行查看
  • 客户端 JS 库是用于表格的纯 jQuery 和 jqGrid
  • Web 应用程序打包为 WAR 并部署到 Tomcat 6.0.35 容器
  • Apache 2.2.22 Web Server 是一个反向代理,为我们的 JS 提供服务(我知道这不是必需的,但这是项目交给我们的方式,而不是我们的设计!)
  • 后端由另一个团队构建和维护,但将 SOLR 和 Oracle 用于上述文本搜索功能

当用户在大约 30 秒后执行“广泛”查询(没有很好地定位并且需要 SOLR 真正突突的查询)时,他们会在屏幕上收到一条错误消息,上面写着“代理错误”。该错误消息将代替显示搜索结果的普通 jqGrid 表显示。

我已经对我们项目中的每个文件进行了全文搜索,但找不到这个短语,也没有“ Proxy”,也没有“ proxy”。

这些神秘且难以捉摸的“代理错误”在 90% 的情况下都发生在 IE8 和 IE9 中,尽管偶尔会在 FireFox 中发现它们。

由于在我们的代码库中找不到该字符串(或任何类似的内容),因此它必须来自这些第 3 方依赖项之一,并且只是以搜索结果的形式发送回用户。

有没有人见过这些技术中的任何一种以前的行为?这可能是浏览器以某种方式注入 DOM 的东西吗?我在这里傻眼了,时间不多了。

4

1 回答 1

0

50x 绝对来自 Apache。检查httpd.conf- 您可能定义了类似Timeout=blah. 如果定义了这个属性,那么当 Apache 将请求转发到 Tomcat 时,如果 Tomcat 响应时间长于blah响应 Apache 快速失败,并向客户端返回 50x,将“代理错误”注入响应正文。

只需删除此超时设置,这会导致现代版本的 Apache 无限期等待。至少这样你不会得到代理错误,尽管不能保证 Tomcat 会返回任何东西给 Apache。

于 2012-07-26T18:06:01.170 回答