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