解决间歇性 Apache 400 Bad Request 错误

Cor*_*ory 3 logging apache-2.2

我正在尝试调试应用程序中的问题并寻找建议或故障排除提示。

我的应用程序由一个通过 HTTPS 向 apache 提交数据的移动应用程序组成(它使用 mod_proxy 转发到 django 服务器)。但是,我在 django 层添加了日志记录,似乎表明 400 直接来自 Apache 并且根本没有转发。

而且这种情况只发生在极小一部分的 POST 中。由于问题很少发生,而且它来自我无法访问的手机,因此很难重现和调试。

我应该注意哪些类型的事情来解决此问题?我找到了这篇文章,但我已经在 Apache 2.2.22 上,所以这似乎不是问题。

由于请求量很大,我不太愿意为每个请求添加完整日志记录(尽管也许我可以做一些条件日志记录?)。

寻找以下方面的建议:

  • 根本问题可能是什么。例如,什么类型的问题会导致出现这样的间歇性 400 错误
  • 鉴于我无法访问客户端数据,如何在服务器端获取更多信息来帮助诊断。

KM.*_*KM. 5

根据 RFC2616,400是错误请求

由于语法错误,服务器无法理解该请求。客户端不应在未经修改的情况下重复请求。

因此,请求的某些原因导致了 400。您可以尝试以下操作:

  • 检查你的 apache 错误日志;您还可以将日志级别warn(默认)增加到debug,然后检查错误日志
  • 检查此类请求的 tcpdump(网上有许多教程)——这可能是查找根本原因的最佳选择。

这是一篇关于 IIS 上的 400 错误故障排除的博客文章,可能也会有所帮助。