最近项目中使用到了 websocket ,开发环境中,使用的是webpack代理:
proxy:{
'/websocket': {
target:'https://xxxx', // websock接口转发
changeOrigin:true,
},
}
代码打包后发布到测试环境,发现控制台关于websocket的接口都报400错误。了解之后找到原因:
400 Bad Request 是一种 HTTP 错误状态码。HTTP/1.1 对 400 Bad Request的定义主要是:
1.语义有误,当前请求无法被服务器理解
2.请求参数有误
3.丢包导致异常
解决方法 :nginx 配置内容修改成:
location ~ /websocket {
proxy_pass https://xxxx;
proxy_set_header Host $host;
proxy_http_version1.1;
proxy_set_header X-Client-IP $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection"upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
proxy_connect_timeout60;
proxy_read_timeout600;
}