部署在CyberPanel上的ASP.NET SignalR WebSocket连接异常求助
解决CyberPanel(OpenLiteSpeed)下ASP.NET SignalR WebSocket连接失败问题
针对你遇到的「Cannot find web socket backend. URI: [/fazendahub]」错误,OpenLiteSpeed对WebSocket的处理逻辑和Apache/Nginx不同,不能直接套用Apache的Rewrite规则,以下是可行的解决方案:
方案一:使用OpenLiteSpeed原生WebSocket代理配置(推荐)
- 登录CyberPanel,进入对应虚拟主机的「LiteSpeed Web Admin Console」
- 导航到「Virtual Hosts」→ 你的域名(api.milksolve.com.br)→「Context」标签页
- 点击「Add」添加新Context:
- Type:选择「WebSocket Proxy」
- URI:填写
/fazendahub(对应你的SignalR Hub路径) - Address:填写
127.0.0.1:5000(你的ASP.NET Web API服务监听地址和端口) - 其余保持默认,点击「Save」保存
- 重启LiteSpeed服务(在LiteSpeed Web Admin顶部点击「Actions」→「Graceful Restart」)
方案二:修正Rewrite规则适配OpenLiteSpeed
如果仍想用Rewrite方式,替换原有规则为以下OpenLiteSpeed兼容版本:
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC] RewriteCond %{HTTP:CONNECTION} Upgrade [NC] RewriteRule ^/fazendahub(.*)$ ws://127.0.0.1:5000/fazendahub$1 [P,L]
注意:
- 规则要精确匹配
/fazendahub路径,避免全局代理引发其他问题 - 必须添加
[L]标志终止后续规则处理 - 确保Rewrite规则在CyberPanel的「Rewrite Rules」页面正确保存,之后重启LiteSpeed服务
额外检查项
- 确认ASP.NET服务配置:在
Program.cs中确保已启用SignalR并正确映射Hub,且允许跨域(若客户端域名不同):builder.Services.AddCors(options => { options.AddPolicy("AllowAll", policy => { policy.WithOrigins("你的客户端域名") .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); }); app.UseCors("AllowAll"); app.MapHub<YourFazendaHub>("/fazendahub"); - 验证后端服务状态:确保ASP.NET Web API在
127.0.0.1:5000正常运行,且/fazendahub路径可通过本地访问 - 检查防火墙:确认CyberPanel服务器的防火墙允许本地进程访问5000端口,且80/443端口的WebSocket流量未被拦截
- 客户端连接地址:确保客户端使用
https://api.milksolve.com.br/fazendahub连接,而非直接访问5000端口
内容的提问来源于stack exchange,提问作者Heitor E. Rezende
相关产品推荐
相关产品推荐

