You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NGINX代理DNS服务器下SignalR生产环境配置问题求助

SignalR生产环境故障排查与免费解决方案

一、基础环境排查

  • 确认生产环境SignalR服务端进程正常运行,查看服务端日志(如ASP.NET Core日志),排查Hub启动异常、连接报错等信息
  • 检查生产环境端口开放状态:确保80/443端口(WebSocket及HTTP/HTTPS通信)在防火墙、安全组中对客户端IP开放,同时确认长轮询 fallback 相关端口无限制
  • 验证SSL证书有效性:如果使用HTTPS,确认证书未过期、客户端信任该证书,避免证书验证失败导致连接中断

二、NGINX核心配置修正

SignalR依赖WebSocket、长轮询等协议,NGINX需正确转发请求,以下是关键配置要点:

  1. 启用WebSocket支持:在对应location块中添加协议升级配置
    location /your-hub-path {
        proxy_pass http://your-application-upstream;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    
  2. 调整长轮询超时:避免NGINX提前断开长连接
    proxy_read_timeout 300s;
    proxy_send_timeout 300s;
    
  3. 免费动态DNS解析配置:使用NGINX自带resolver指令实现动态解析,替代付费方案
    resolver 8.8.8.8 1.1.1.1 valid=300s; # 公共DNS服务器,缓存300秒
    set $upstream "your-app-domain.com";
    proxy_pass http://$upstream;
    

三、客户端配置优化

  • 使用相对路径初始化Hub连接,自动适配当前访问域名,无需配置多URL:
    const connection = new signalR.HubConnectionBuilder()
        .withUrl("/your-hub-path")
        .build();
    
  • 强制优先使用WebSocket,规避长轮询配置问题:
    .withUrl("/your-hub-path", {
        transport: signalR.HttpTransportType.WebSockets
    })
    
  • 查看客户端开发者工具:通过Console和Network标签,排查连接时的404、502、超时、WebSocket握手失败等错误

四、网络与DNS验证

  • 在生产服务器上用nslookup/dig命令测试私有/公共DNS解析结果,确保指向正确的NGINX服务器IP
  • 在客户端机器上测试WebSocket连通性:
    curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Host: your-production-domain.com" -H "Origin: https://your-production-domain.com" https://your-production-domain.com/your-hub-path/negotiate
    
    检查响应是否包含正常的协商结果

五、日志深度排查

  • 开启SignalR服务端详细日志:在appsettings.json中添加配置
    {
        "Logging": {
            "LogLevel": {
                "Microsoft.AspNetCore.SignalR": "Debug",
                "Microsoft.AspNetCore.Http.Connections": "Debug"
            }
        }
    }
    
    从日志中定位连接建立、协商、传输方式选择等环节的故障点
  • 检查NGINX日志:查看/var/log/nginx/access.log和/var/log/nginx/error.log,排查5xx错误、转发失败、连接超时记录

内容的提问来源于stack exchange,提问作者Kuldeep Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 01:35:07