Ult*_*nct 4 apache proxy curl http-status-code-429
背景
我们一直在 JBoss 上运行一个应用程序,该应用程序通过Apache 反向代理向客户端公开。我们最近引入了“HTTP 429 Too much requests”来减慢高速请求。
问题
然而,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|
Run Code Online (Sandbox Code Playgroud)
不知何故,Curl 客户端得到了 500。
几年前在 Bugzilla #900827 上也提交了一个错误。我记得读到它已在 2.2.18 中修复。然而,我仍然面临这个问题——这让我认为可能存在完全不同的问题。
问题
PS:由于这个问题更多的是关于HTTP状态规范,所以我在这里问。如果社区认为更多的是关于 apache,请随时投票将问题移至服务器故障。
小智 5
我只是偶然发现了你的问题,因为我再次研究了类似的问题,我们的 Apache 反向代理在 ActiveSync 响应 449 上返回了 500 状态代码。
我还找到了您提到的 Bugzilla 条目以及它应该已在 2.2.18 版本中修复的声明,但是我们使用 2.2.22 仍然面临问题。
进一步阅读 Bugzilla 条目中的注释后,会导致apache bug 条目 #44995。阅读这些评论,尤其是最后一条评论,让我相信这个问题,特别是没有状态消息的自定义错误代码,尚未在任何 2.2.x 版本中得到修复,但已包含在 2.3/2.4 中
因此,我们继续将反向代理更新到 2.4 版本,令我们惊讶的是,代理正确地传递了错误代码 449。
由于您没有提到您使用的 apache2 版本,我只能猜测更新到 2.4 或 2.3 可能是您的一个可能的解决方案。