Art*_*yom 10 nginx signalr asp.net-core
我有一个服务器与ubuntu 16.04,kestrel和nginx作为代理服务器重定向到我的应用程序所在的localhost.我的应用程序在Asp.Net Core 2.我正在尝试添加推送通知和使用SignalR核心.在localhost上一切都运行良好,并在免费托管与iis和Windows.但是当我在linux服务器上部署我的应用程序时,我有一个错误:
signalr-clientES5-1.0.0-alpha2-final.min.js?v = kyX7znyB8Ce8zvId4sE1UkSsjqo9gtcsZb9yeE7Ha10:1个WebSocket连接到'ws://devportal.vrweartek.com/chat?id = 210fc7b3-e880-4d0e-b2d1-a37a9a982c33'失败:WebSocket握手期间出错:意外的响应代码:204
但是只有当我通过我的站点名称从不同的机器请求我的站点时才会出现此错误.当我通过localhost:port从服务器请求站点时,一切都很好.所以我认为nginx存在问题.我读到我需要配置它来处理websocket,这些websocket用于signalr建立连接,但我没有成功.可能只有一些愚蠢的错误?
小智 13
问题是nginx配置文件.如果您使用的是ASP.NET Core部署指南的默认设置,那么问题就是代理标头之一.WebSocket需要Connection标头作为"升级".
您必须在nginx配置文件上为SignalR Hub设置新路径.
如
location /api/chat {
proxy_pass http://localhost:5000;
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;
}
Run Code Online (Sandbox Code Playgroud)
你可以阅读我的完整博客文章
https://medium.com/@alm.ozdmr/deployment-of-signalr-with-nginx-daf392cf2b93
tri*_*rit 11
我能够通过使用$ http_connection而不是keep-alive或upgrade来解决这个问题
server {
server_name example.com;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Run Code Online (Sandbox Code Playgroud)
我之所以这样做是因为SignalR还试图对我的集线器使用POST和GET请求,所以仅在单独的服务器配置中升级到连接是不够的.
| 归档时间: |
|
| 查看次数: |
6044 次 |
| 最近记录: |