C# 使用signar的后端.net内核的Nginx反向代理
我有一个运行asp.net core的web服务器,它使用的信号器与我通信有问题 我的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
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
值得一提的是,服务器正在远程服务器上运行。检查。检查。