问题,之前都没出现异常,突然出现异常,
nginx可以正常访问前端资源,访问接口报错
400 Bad Request
经过测试,发现是nginx配置里这3行代码导致的
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_next_upstream error http_500;
删掉重启即可
全面对比后发现,生产环境用的nginx配置是域名,而预生产环境用的是IP+端口,除此之外没有任何区别,使用跳转方式与反向代码方式测试,结果都是一样,添加port_in_redirect、server_name_in_redirect配置也没能解决
综合分析,应该是nginx在使用proxy_pass做跳转时,如果直接使用域名,且需要向后端提交当前访问的IP地址时,引发nginx的bug造成死循环,不知道大家有没有遇到过这种情况。
参考:nginx配置反向代理或跳转出现400问题处理记录 - 程序员大本营