信号器完成CORS协商,但与nginx代理的集线器连接失败。即使使用CORS,直接连接也可以

信号器完成CORS协商,但与nginx代理的集线器连接失败。即使使用CORS,直接连接也可以,nginx,signalr,nginx-reverse-proxy,Nginx,Signalr,Nginx Reverse Proxy,我的网页位于example.com,主要api后端服务位于api.example.com,信号器服务位于signar.example.com 第一种也是最首选的连接方式是webpage-main-backend-signer,因为main-backend以相同的方式处理其他微服务,我希望在一台主服务器上保留SSL证书 通过这种方式,信号器完成HTTPS/negotiate请求,但在所有集线器连接尝试中失败 第二种连接方式是从网页到主后端和信号器的并行连接 |-->

我的网页位于
example.com
,主要api后端服务位于
api.example.com
,信号器服务位于
signar.example.com

第一种也是最首选的连接方式是
webpage-main-backend-signer
,因为main-backend以相同的方式处理其他微服务,我希望在一台主服务器上保留SSL证书

通过这种方式,信号器完成HTTPS
/negotiate
请求,但在所有集线器连接尝试中失败

第二种连接方式是从网页到主后端和信号器的并行连接

           |--> main backend
webpage <--|
           |--> signalr
由于某些原因,代理信号器完成协商,仅在集线器连接上失败。当我将客户端直接连接到信号器后端时,它工作正常。这两种情况都需要COR。区别在于:

  • 第一个连接使用http/2,而第二个连接使用http/1.1(强制第一个连接使用http/1.1没有效果)
  • 第一个连接使用SSL,而第二个连接不使用SSL(在第一个连接上禁用SSL无效)
server {
// other locations and services
location ^~ /vats-hub/ {
        proxy_pass http://signalr.example.com:23166;
        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;
    }
}