如何在Apache中运行WebSocket?连接异常问题求助
Apache反向代理WebSocket连接失败(状态码1006)解决方案
1. 启用必要的Apache模块
WebSocket反向代理依赖三个核心模块,执行以下命令启用并重启Apache:
sudo a2enmod proxy proxy_http proxy_wstunnel sudo systemctl restart apache2
2. 修正虚拟主机配置
编辑/etc/apache2/sites-available/mydomain.com.conf,添加或调整代理规则,确保WebSocket请求被正确转发到8080端口的服务:
<VirtualHost *:80> ServerName mydomain.xyz # 基础WebSocket代理转发 ProxyPass /ws/ ws://localhost:8080/ ProxyPassReverse /ws/ ws://localhost:8080/ # 处理WebSocket协议升级请求 RewriteEngine On RewriteCond %{HTTP:Upgrade} =websocket [NC] RewriteRule /ws/(.*) ws://localhost:8080/$1 [P,L] RewriteCond %{HTTP:Upgrade} !=websocket [NC] RewriteRule /ws/(.*) http://localhost:8080/$1 [P,L] # 保留原有虚拟主机配置(如DocumentRoot、日志路径等) </VirtualHost>
3. 验证WebSocket服务本身可用性
先跳过Apache代理,直接测试本地服务是否正常:
# 需先安装wscat:npm install -g wscat wscat -c ws://localhost:8080
如果能成功连接,说明服务本身无问题,问题出在Apache代理配置;若连接失败,检查Python服务是否正常运行、8080端口是否被占用。
4. 重启Apache并测试
保存配置后重启Apache,再用客户端连接ws://mydomain.xyz/ws/验证:
sudo systemctl restart apache2
内容的提问来源于stack exchange,提问作者katia torres
相关产品推荐
相关产品推荐

