項目采用了Nginx做反向代理,在非代理的情況下,采用ip或者域名訪問都是ok的。
但是當采用了反向代理后,項目中的SignalR就一直拋出“Error during WebSocket handshake: Unexpected response code: 200”的異常
跟進錯誤信息搜索到的解決方案大致都是如下,nginx里面條件相關WebSocket 的配置,主要是是如下三項:
proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Cpnnection "upgrade";
配置后的截圖如下:
修改配置后需要重啟重啟Nginx
發現按照網上如此配置沒有效果,還是拋出一樣的錯誤信息。
后查看Nginx官方文檔,需要對於WebSocket進行單獨的配置
上圖中的 /wsapp/ 指的也就是我們的SignalR的hub名稱,我們當前的hub的名稱是:searchStatusHub,修改后的配置如下:
修改配置后需要重啟重啟Nginx
修改之后發現問題已經解決!
為了驗證路由是走的hub配置的,我們將根路由的相關的WebSocket配置注釋,如下圖:
修改配置后需要重啟重啟Nginx
發現一切正常,如下圖,測試通過!