首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WebSocket握手期间出错:缺少'Upgrade‘标头

WebSocket握手期间出错:缺少'Upgrade‘标头
EN

Stack Overflow用户
提问于 2019-03-03 23:52:45
回答 1查看 2.6K关注 0票数 0

我有一个在浏览器和服务器之间启动websocket连接的IIS网站。网址看起来像这样:http://stream.mydomain.com/h264.html?serverid=192.168.1.52。显然,这个连接不能在外部建立,所以我尝试使用NGinx来实现。我有一个名为streams.mydomain.com的子域,我正在尝试根据路径重新路由,这样我的新网址看起来就像http://stream.mydomain.com/h264.html?serverid=streams.mydomain.com/101。我已经尝试了几个路由,包括proxy_pass,它导致了意外的响应。现在我正在尝试return,但我一直有标题问题。具体地说,它说一个头不存在,即使我显式地包含了它,并且它显示在Chrome的请求中。

下面是我的配置:

代码语言:javascript
运行
复制
server {
    listen      *;
    server_name streams.mydomain.net;
    location /101/ {
        add_header  'Connection'    'Upgrade';
        add_header  'Upgrade'       websocket;
        return      101             $scheme://192.168.1.52;
    }
}

下面是我得到的错误:

代码语言:javascript
运行
复制
Error during WebSocket handshake: 'Upgrade' header is missing

这是Chrome调试工具中请求的屏幕截图,在我看来,它显示了"missing“标题:

以下是使用内网本端IP (无NGinx)的工作请求截图:

EN

回答 1

Stack Overflow用户

发布于 2019-07-15 20:59:15

我无法通过这些路由实现我想要的效果,但这是我必须采用的解决方案:

代码语言:javascript
运行
复制
http {
    server {
        listen      80;
        server_name server101.domain.com;
        location / {
            proxy_http_version  1.1;
            proxy_set_header    Connection  "Upgrade";
            proxy_set_header    Upgrade     $http_upgrade;
            proxy_pass          $scheme://10.1.5.98:80;
        }
    }
}

我仍然希望有一天能弄清楚怎么做servers.domain.com/101。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54970674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档