Apache Reverse Proxy更改状态代码

时间:2014-07-16 08:02:18

标签: apache curl proxy http-status-code-429

背景

我们一直在JBoss上运行一个通过 Apache反向代理向客户端公开的应用程序。我们最近引入了“HTTP 429太多请求”来减慢高速请求。


问题

但是,似乎apache2将HTTP状态代码从429更改为500。

根本原因分析

  • 从JBoss确认它通过绕过代理发送HTTP 429,然后直接与它通信。
  • 从/var/log/apache2/access.log确认,apache2获取HTTP 429

    10.0.0.161 - - [16/Jul/2014:07:27:47 +0000] "POST /the/URL/ HTTP/1.1" 429 1018 "-" "curl/7.36.0" |0/466110|
    
  • Curl Client以某种方式得到500.

还有一个bug filed few years back on Bugzilla #900827。我记得读过它已在2.2.18中修复过。然而,我仍然面临着这个问题 - 这让我觉得可能完全存在不同的问题。

问题

PS:由于这个问题更多是关于HTTP状态规范,我在这里问。如果社区更多地了解apache,请随时投票将问题移至服务器故障。

1 个答案:

答案 0 :(得分:3)

我只是偶然发现了你的问题,因为我再次研究了一个类似的问题,我们的Apache反向代理在ActiveSync Response 449上返回了500状态代码。

我还发现了你提到的Bugzilla条目和它应该用2.2.18版本修复的声明,但是我们使用2.2.22仍然遇到了问题。

在进一步阅读Bugzilla条目中的评论后,然后导致apache bug entry #44995。阅读这些评论,特别是最后一条评论让我相信这个问题,特别是没有状态信息的自定义错误代码已经在任何2.2.x版本中修复了,但是包含在2.3 / 2.4中/ p>

所以我们继续并将我们的反向代理更新为2.4版本,令我们惊讶的是,代理正确地传递了错误代码449。

正如您没有提到您使用的apache2版本,我只能猜测2.4或2.3的更新可能是您可能的解决方案。