本地开发时,使用Nginx作为本地代理转发后端请求来解决跨域问题时,间歇性出现以下502 Bad Gateway
:
最初以为是后端接口响应出错,后端排查后发现没问题。
因为报错信息上Nginx的版本信息与我本机的版本一样——nginx/1.21.3
,且我使用的是Nginx代理转发的方式,因此,从Nginx上开始排查。
首先,添加Nginx错误日志
在Nginx配置中添加error-log配置,将错误信息记录下来,配置如下:
http {
...
error_log /var/logs/nginx-error.log error;
...
}
重启Nginx:sudo nginx -s reload
查看错误
当请求出错时,可以在/var/logs/nginx-error.log
中查看到接口对应的错误信息:
2021/12/24 14:11:00 [error] 34049#0: *351 upstream sent too big header while reading response header from upstream, client: 127.0.0.1, server: wxp.crm, request: "POST /login/auth.rjson HTTP/1.1", upstream: "xx.xx.xx.xxx:80/login/auth.…", host: "wxp.com", referrer: "wxp.com/"
上述报错信息的意思,简单的说就是从服务器端接收到的响应头太大,超过了限制——默认情况下是1KB
解决方法
既然是使用Nginx作为代理服务器,所以需要对proxy_module模块进行相应的配置
主要设置以下三项:
proxy_buffer_size 64k;
proxy_buffers 32 32k;
proxy_busy_buffers_size 128k;