Nginx反向代理+Websocket 导致找不到请求路径 No handler found for GET


1、网络环境

Nginx作为前端服务器,并且为解决跨域问题对后台服务做了反向代理。

2、所有http请求都好着,Websocket后台提示“No handler found for GET”,找不到服务路径。

 3、通过全网查询,最后解决办法,在反向代理location中增加

location /lawAccept/ {
        proxy_set_header Connection 'upgrade'; proxy_set_header Upgrade $http_upgrade; 
        proxy_pass http://localhost:8085/lawAccept/; 
}            

4、参数解释

访问websocket时的链接通常为

socket = new WebSocket("ws:192.168.2.24:8080/oneAccept/evalwebsocket/")

此时协议信息如下

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat

通过与http请求头对比,发现多了

Upgrade: websocket
Connection: Upgrade

此种用法使用的协议为ws协议,必须借助http做第一次握手,现在前端和后端增加了nginx作为代理,则需要在nginx中将使用的ws协议让后端知晓

proxy_set_header Connection 'upgrade';  //告诉接收端,要进行协议升级

proxy_set_header Upgrade $http_upgrade; //升级为websocket


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM