项目采用了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
发现一切正常,如下图,测试通过!