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

在Linux上使用Nginx托管带SignalR的ASP.NET Core 5应用报错求助

Nginx反向代理托管带SignalR的ASP.NET Core 5.0应用故障排查

背景说明

我正在尝试将基于.NET 5.0的ASP.NET Core应用部署在Linux系统上,通过Nginx反向代理托管,该应用包含一个SignalR Hub。所有功能在Windows开发环境下运行正常,但部署到Linux搭配Nginx后就出现故障,出于成本原因必须使用Linux部署,现需要排查问题。

初始配置情况

  • 已按照微软官方默认配置完成基础托管
  • 初始Nginx配置如下:
server {
listen        80;
server_name   example.com *.example.com;
location / {
    proxy_pass         http://127.0.0.1:5000;
    proxy_http_version 1.1;
    proxy_set_header   Upgrade $http_upgrade;
    proxy_set_header   Connection keep-alive;
    proxy_set_header   Host $host;
    proxy_cache_bypass $http_upgrade;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header   X-Forwarded-Proto $scheme;
}}
  • 初始配置下可以正常访问ASP.NET Core站点,但出现SignalR相关报错:
    SignalR报错截图

调整配置后的问题

  • 参考微软官方SignalR部署文档调整Nginx适配配置,调整后配置如下:
http {
  map $http_connection $connection_upgrade {
    "~*Upgrade" $http_connection;
    default keep-alive;
}

  server {
    listen 80;
    server_name example.com *.example.com;

    # 配置SignalR端点
    location /signalRHub {
      # 应用服务地址
      proxy_pass http://localhost:5000;

      # WebSockets相关配置
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection $connection_upgrade;
      proxy_cache off;

      # WebSockets基于HTTP 1.1实现
      proxy_http_version 1.1;

      # ServerSentEvents相关配置
      proxy_buffering off;

      # LongPolling相关配置,若KeepAliveInterval超过60秒也需要配置
      proxy_read_timeout 100s;

      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
    }
  }
}
  • 尝试将调整后配置中的proxy_pass值从http://localhost:5000修改为和初始配置一致的http://127.0.0.1:5000,依然没有解决问题,启动Nginx时抛出如下报错:
    Nginx启动报错截图

已配置的转发头信息

已在Startup类的Configure方法中添加如下转发头配置,不确定是否配置正确:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IStringLocalizer<Startup> localizer)
      {
            app.UseForwardedHeaders(new ForwardedHeadersOptions
            {
                ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
            });
...
}

内容的提问来源于stack exchange,提问作者R.Haughton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 16:15:03