【问题标题】:Error during WebSocket handshake: 'Upgrade' header is missing (Apache 2.4 + mod_proxy_wstunnel)WebSocket 握手期间出错:缺少“升级”标头(Apache 2.4 + mod_proxy_wstunnel)
【发布时间】:2016-12-01 09:46:52
【问题描述】:

我在服务器上运行 Apache 2.4,并设置了一个子域来处理我的 Node.JS Web 应用程序,该应用程序也使用 websockets。

我的 Apache 站点配置是:

<VirtualHost *:80> 
  ProxyPreserveHost On
  ProxyRequests Off
  ServerName ws.mysite.io
  ProxyPass /ws/ ws://1.2.3.5:6789/
  ProxyPassReverse /ws/ ws://1.2.3.5:6789/
  ProxyPass / http://1.2.3.5:6789/
  ProxyPassReverse / http://1.2.3.5:6789/
</VirtualHost> 

因此,当用户来到http://ws.mysite.io/ - 他们从我的 node.js 应用程序(使用 express)获得 html 并且 html 有一个 javascript 部分通过ws.mysite.io/ws/ 上的 websocket 与 node.js 应用程序通信被“隧道”到ws://1.2.3.5:6789/

我遇到了一种情况,在家庭 wifi 上 - 一切正常。没问题。

在工作中,我们确实有防火墙、代理...但我不知道确切的限制或阻止,但是当我打开 http://ws.mysite.io/ 时,我进入了 Chrome 控制台:

WebSocket connection to 'ws://ws.mysite.io/ws/' failed: Error during WebSocket handshake: 'Upgrade' header is missing

这是因为工作代理“切断”了一些东西吗?有没有机会建立一个“防弹”隧道来克服这样的事情?

【问题讨论】:

    标签: javascript node.js apache websocket


    【解决方案1】:

    据我所知,你不需要这行:

    ProxyPassReverse /ws/ws://1.2.3.5:6789/

    【讨论】:

      猜你喜欢
      • 2019-05-16
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      • 1970-01-01
      • 2016-09-12
      • 2015-06-17
      • 1970-01-01
      • 2019-07-01
      相关资源
      最近更新 更多