Skip to content

从根本修复:upstream sent too big header while reading response header from upstream

报错背景

某个用户的个人主页发生了报错,其他用户都没有问题。因为是同一份代码,所以问题应该在数据上。

初步尝试

搜索了一轮都是说修改nginx的buffer配置,这不难理解,就是让nginx允许接收足够big的header。这是一个急则治标的方法,但是我尝试了之后并不能解决。所以只能治本来解决。

最终解决

最后通过查看日志上下文,发现是某个循环中的foreach有空值,会产生warning错误,因为这个foreach又在循环中,所以会产生很多个warning。这些warning是会在头部返回之前输出的,所以会被算入头部的数据,以至于nginx认为上游发送了太长的头部数据。

所以治本的方法应该是解决代码中可能出现的warning。引申一下就是要检查代码有没有可能出现控制之外的输出。

分享到:
Published in程序猿的东西

Be First to Comment

发表评论