Я перемещаю приложение ASP.NET Core из Windows Server в Ubuntu с Nginx v1.15.5, и я изо всех сил пытался заставить работать SignalR. Соединение websocket продолжает получать код возврата 200 вместо обновления. Все остальные аспекты приложения работают.
Все отлично работает в Windows с IIS, IIS Express и локальным сервером разработки Kestrel, так что я предполагаю, что мне чего-то не хватает в конфигурации прокси Nginx.
Я перепробовал все, что перечислено в разделе ниже. Ниже приведено текущее состояние (запуск и конфигурация Nginx моего сайта). Все журналы выглядят так, как указано ниже.
Сайт является общедоступным, поэтому вы можете протестировать его с помощью инструментов разработчика, чтобы просмотреть запросы / ответы.
Site: https://my.doxm.app/
Login ID: fix@me.please
Password: P@ssword1
Соединение SignalR начинается сразу после входа в систему.
Любая помощь будет оценена.
In Startup.cs
public void Configure(IApplicationBuilder app, IHostingEnvironment env, DataService dataService)
{
DataService = dataService;
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
//app.UseHttpsRedirection();
}
ConfigureStaticFiles(app);
app.UseCookiePolicy();
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
app.UseAuthentication();
app.UseSignalR(routes =>
{
routes.MapHub<BrowserSocketHub>("/BrowserHub", options =>
{
options.ApplicationMaxBufferSize = 500000;
options.TransportMaxBufferSize = 500000;
});
routes.MapHub<DeviceSocketHub>("/DeviceHub", options =>
{
options.ApplicationMaxBufferSize = 500000;
options.TransportMaxBufferSize = 500000;
});
routes.MapHub<RCDeviceSocketHub>("/RCDeviceHub");
routes.MapHub<RCBrowserSocketHub>("/RCBrowserHub");
});
app.UseMvcWithDefaultRoute();
dataService.SetAllMachinesNotOnline();
dataService.CleanupEmptyOrganizations();
dataService.CleanupOldRecords();
}
Конфигурация сайта Nginx
server {
listen 80;
server_name my.doxm.app *.my.doxm.app;
location / {
proxy_pass http://localhost:5000;
include /etc/nginx/proxy_params;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_cache_bypass $http_upgrade;
}
location /BrowserHub {
proxy_pass http://localhost:5000;
include /etc/nginx/proxy_params;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_cache_bypass $http_upgrade;
}
# Other locations will go here once I get the above one working.
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/my.doxm.app/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/my.doxm.app/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
Содержимое / etc / nginx / proxy_params
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
Ссылки:
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-2.2
SignalR в ASP.NET Core за Nginx
https://kimsereyblog.blogspot.com/2018/07/signalr-with-asp-net-core.html
Asp.Net Core 2 SignalR Ubuntu Xamarin Android
https://www.nginx.com/blog/websocket-nginx/
http://nginx.org/en/docs/http/websocket.html
Журналы
2019/01/09 14:05:24 [alert] 24344#24344: *74 open socket #3 left in connection 5
2019/01/09 14:05:24 [alert] 24344#24344: *79 open socket #13 left in connection 8
2019/01/09 14:05:24 [alert] 24344#24344: aborting
2019/01/09 14:11:20 [alert] 24395#24395: *200 open socket #13 left in connection 4
2019/01/09 14:11:20 [alert] 24395#24395: *195 open socket #3 left in connection 15
2019/01/09 14:11:20 [alert] 24395#24395: aborting
2019/01/09 14:26:12 [alert] 24845#24845: *1 open socket #3 left in connection 3
2019/01/09 14:26:12 [alert] 24845#24845: *6 open socket #13 left in connection 4
2019/01/09 14:26:12 [alert] 24845#24845: aborting
2019/01/09 14:36:49 [alert] 25082#25082: *19 open socket #3 left in connection 3
2019/01/09 14:36:49 [alert] 25082#25082: *24 open socket #13 left in connection 4
2019/01/09 14:36:49 [alert] 25082#25082: aborting
2019/01/09 14:48:06 [alert] 26806#26806: *62 open socket #13 left in connection 3
2019/01/09 14:48:06 [alert] 26806#26806: *57 open socket #3 left in connection 4
2019/01/09 14:48:06 [alert] 26806#26806: aborting
2019/01/09 14:49:12 [alert] 26933#26933: *1 open socket #3 left in connection 3
2019/01/09 14:49:12 [alert] 26933#26933: *5 open socket #14 left in connection 5
2019/01/09 14:49:12 [alert] 26933#26933: aborting