首页 > 解决方案 > 代理配置和 Websocket 的问题

问题描述

使用 WHM/cPanel 运行 CentOS。运行我们最近向客户开放的第三方 BI 工具。它在端口 8080 上运行,并且与客户和端口有很多问题。尝试设置代理以允许用户访问端口 80。除 WebSocket 外,一切正常。适用于端口 8080 但不适用于 80。

错误:

WebSocket 连接到“ws://test.titandash.com/vs-events/831/dot3dqaq/websocket”失败:WebSocket 握手期间出错:意外响应代码:400

WS 网址:

当前 Conf.d 包括

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
<VirtualHost 192.249.120.188:80>
        ServerName test.titandash.com
        ServerAdmin ccole@shiptsg.com
        ProxyPreserveHost Off
        ProxyRequests Off
        ProxyPass / http://titandash.com:8080/ upgrade=WebSocket
        ProxyPass "/vs-events" "http://titandash.com:8080/vs-events" upgrade=WebSocket
        ProxyPassReverse / http://titandash.com:8080/
</VirtualHost>

标签: apachewebsocketproxyreverse-proxy

解决方案


cd /etc/apache2/sites-enabled

如果您仍在使用 000-default.conf,请将您的虚拟主机配置放在那里,而不是 config.d

<VirtualHost *:80>
    ServerName test.titandash.com
    ServerAdmin ccole@shiptsg.com
    ProxyPreserveHost On
    ProxyRequests Off
    ProxyPass "/vs-events/" "ws://[enterbackendserver]:8080/vs-events"
</VirtualHost>

然后在命令行中运行这些:

sudo a2enmod proxy

sudo a2enmod proxy_http

sudo a2enmod proxy_wstunnel

sudo systemctl restart apache2

推荐阅读