nginx代理websocket接口转发丢失header
页面纯html编写,后端是springboot(2.7.14)项目,使用nginx代理页面和后端。websocket通过nginx转发,后端无法获得header而报错,报错内容:Handshake failed due to invalid Upgrade header: null,通过搜索已经配置nginx,内容如下
location /ws {
proxy_pass http://localhost:5555/DocSystem;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Sec-WebSocket-Protocol $http_sec_websocket_protocol;
proxy_http_version 1.1;
proxy_read_timeout 3600s;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
但仍不起作用,后端仍无法获取到header
追加
nginx增加了升级协议版本,但是不起作用,抓包如图
前端->nginx
nginx->后端
目前已解决
产生问题的原因:
nginx中配置的是:location /ws 就不行,会丢失header,http协议版本也会降到1.0
修改办法:location /web/static/office-editor/doc 修改成具体的转发规则,就可以