WebSocket 握手期间出错:缺少'Upgrade'标头 (Apache 2.4 + mod_proxy_wstunnel)



我在服务器上运行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部分通过websocket在ws.mysite.io/ws/上与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

这是由于工作代理"切断"的东西吗?有没有可能建立一个"防弹"隧道来克服这种情况?

据我所知,您不需要这一行:

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

相关内容

  • 没有找到相关文章