.net核心nginx托管套接字不允许http发布

Nev*_*ane 2 nginx websocket asp.net-core

我正在尝试创建一个具有http函数(包括http post函数)和web套接字(例如signalR)的网站。我正在尝试使用nginx在ubuntu服务器上托管此网站。通常,在nginx上的设置是这样的:

server {
 listen 80;
 location / {
    proxy_pass http://localhost:5000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection keep-alive;
    proxy_set_header Host $http_host;
    proxy_cache_bypass $http_upgrade;
 }
}
Run Code Online (Sandbox Code Playgroud)

但是,我后来发现我需要添加proxy_set_header Connection "upgrade";才能使用websocket。但是,在.net Core项目中添加此行会导致所有http发布请求均显示400错误,如此处所示,在ASP.Net Core中发布表单数据时显示400状态错误。是否有一个既允许发布帖子又允许Web套接字的设置?

小智 6

使用$ http_connection而不是保持活动或升级

proxy_set_header Connection $http_connection;
Run Code Online (Sandbox Code Playgroud)