C# 使用signar的后端.net内核的Nginx反向代理

C# 使用signar的后端.net内核的Nginx反向代理,c#,.net,nginx,signalr,ubuntu-server,C#,.net,Nginx,Signalr,Ubuntu Server,我有一个运行asp.net core的web服务器,它使用的信号器与我通信有问题 我的Nginx默认设置如下所示: server_name example.com www.example.com; #FrontEnd location / { root /var/www/app/frontend/dist; } #BackEnd location ~ /(Lobby|Room|Channel|test) { proxy_pass http://localhost:50

我有一个运行asp.net core的web服务器,它使用的信号器与我通信有问题

我的Nginx默认设置如下所示:

server_name example.com www.example.com;

#FrontEnd
location / {            
root /var/www/app/frontend/dist;
}

#BackEnd
location ~ /(Lobby|Room|Channel|test) {
proxy_pass http://localhost:5000;
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;
}

[Service]
User=root
Group=root
Restart=always
RestartSec=10
KillSignal=SIGINT
WorkingDirectory=/var/www/app/backend/app
ExecStart=/usr/bin/dotnet /var/www/app/backend/app/Backend.dll
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false 
我正在尝试将所有/lobble、/Room、/Channel请求路由到运行kestrel的asp.net web服务器

我的后端服务器的服务配置如下:

server_name example.com www.example.com;

#FrontEnd
location / {            
root /var/www/app/frontend/dist;
}

#BackEnd
location ~ /(Lobby|Room|Channel|test) {
proxy_pass http://localhost:5000;
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;
}

[Service]
User=root
Group=root
Restart=always
RestartSec=10
KillSignal=SIGINT
WorkingDirectory=/var/www/app/backend/app
ExecStart=/usr/bin/dotnet /var/www/app/backend/app/Backend.dll
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false 
最后,我的startup.cs看起来像这样

services.Configure<ForwardedHeadersOptions>(options => {
options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
            });
services.AddSignalR();
            
services.AddCors(CorsConfig.Configure); 

=== Policy ==== 
options.AddPolicy(AllowKnownClientOriginsCorsPolicy,
builder =>
{
   builder.AllowAnyMethod()
   .AllowAnyHeader()
   .WithOrigins(
   "http://example.com",
   "https://example.com")
   .AllowCredentials();
});


==== CONFIGURE ====

app.UseCors(CorsConfig.AllowKnownLocalClientOriginsCorsPolicy);

app.UseForwardedHeaders();

app.UseRouting();

services.Configure(选项=>{
options.ForwardedHeaders=ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
});
services.AddSignalR();
services.AddCors(CorsConfig.Configure);
==策略===
选项。添加策略(AllowKnownClientOrigins公司策略,
生成器=>
{
builder.AllowAnyMethod()
.AllowAnyHeader()
.有来历(
"http://example.com",
"https://example.com")
.AllowCredentials();
});
==配置====
应用程序UseCors(公司配置、AllowknownloclientoriginsCorspolicy);
app.UseForwardedHeaders();
app.UseRouting();
尝试从前端应用程序访问后端时,控制台中出现如下错误:

server_name example.com www.example.com;

#FrontEnd
location / {            
root /var/www/app/frontend/dist;
}

#BackEnd
location ~ /(Lobby|Room|Channel|test) {
proxy_pass http://localhost:5000;
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;
}

[Service]
User=root
Group=root
Restart=always
RestartSec=10
KillSignal=SIGINT
WorkingDirectory=/var/www/app/backend/app
ExecStart=/usr/bin/dotnet /var/www/app/backend/app/Backend.dll
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false 
** 错误:无法启动传输“WebSocket”:null

Firefox无法在上建立与服务器的连接wss://example.com/Lobby?id=XF76OkXbJu6e3SwC_daRgw.

错误:服务器返回握手错误:握手已取消。 **

请帮助我联系我的后端服务器通过信号通过这些提到的路线。 我不确定错误是来自Nginx settings还是Startup.cs

值得一提的是,服务器正在远程服务器上运行。

检查。检查。