最近由于nginx 1.20的某个漏洞需要升级到nginx1.25的版本。在测试环境升级完nginx后,发现应用直接报错502 bad gateway了。
然后查看nginx的errlog,发现:
upstream sent invalid header: "Cache\x20..." while reading response header from upstream,
报错信息显示应该是http 请求header里面有问题,"Cache\x20…"代表的是空字符串。
通过搜搜引擎和chatgpt都未找到正确的答案。后面在官网中找到这样的描述:说是在nginx1.21以后是会直接拒绝非法的请求头的。
根据这个信息排查后端代码发现,在拦截器中 HttpServletResponse的header中的“Cache-Control”参数多了个空格
。将空格删除后问题解决。