我们正在运行一个Web服务,并随机打到502 Bad Gateway。 在与后端服务器(Apache 2.4.x)交谈时,502由反向代理(Apache 2.4.x)报告。 这个问题在每10万个服务请求中随机出现一次,因此很难重现。 我发现Apache允许在可能的选项IsError|Ignore|StartBodyconfigurationProxyBadHeader指令。 我有问题find错误的确切原因。 我知道,如果我将ProxyBadHeader设置为StartBody则部分输出将以浏览器结束。 我真的不想将数据发送给未知的最终用户,所以我需要更好的东西。 是否有可能从坏的网关logging所有部分收到的数据?
这个问题看起来类似于Apache错误37770,但它应该在我们运行的版本中修复。
根据我的经验,您正确地指向Apache的反向代理function中的37770错误 。 如果您检查从2008年到2016年引用的补丁,您会发现自己确实是这样的解决方法。 如果根本原因在httpd-2.4中消失了,那么从那里的对话或从观察到的httpd行为来看,这都是不明显的。
或
SetEnv proxy-initial-not-pooled 1 # prevent a small percentage of 502 errors, comes with a performance penalty
或者接受一小部分请求获得502。 或者迁移到haproxy。
我想如果你收集了后端的对话,你会看到后端没有看到HTTP GET。 这是我的小调查的结果,我的结论是,连接得到某种程度上丢失在反向代理服务器代码(也许在后台连接从池中取出或返回)。