You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP WebSocket(Ratchet)遇404错误,Apache反向代理问题排查

问题排查与修复方案

核心问题分析

你的反向代理配置存在两个关键问题:

  • 后端Ratchet服务使用的是ws协议,你却配置了wss://127.0.0.1:8080,导致Apache无法正确转发请求
  • 缺少WebSocket握手必需的HTTP头转发规则,握手失败触发404错误

修复步骤

1. 修正反向代理配置

修改mysite.url.conf中的<Location>块内容,调整协议并添加头转发规则:

<Location /websocket>
    # 后端服务是ws协议,这里改用ws://而非wss://
    ProxyPass "ws://127.0.0.1:8080"
    ProxyPassReverse "ws://127.0.0.1:8080"

    # 转发WebSocket握手必需的HTTP头
    ProxyAddHeaders On
    RequestHeader set Upgrade "websocket"
    RequestHeader set Connection "Upgrade"
</Location>

2. 确认代理模块状态

执行命令检查proxy_wstunnel模块是否已加载:

httpd -M | grep wstunnel

如果无输出,先启用模块再重启Apache:

sudo a2enmod proxy_wstunnel
sudo systemctl restart httpd

3. 排查其他拦截规则

检查配置文件中是否存在RewriteRule或其他路径规则,可能拦截/websocket请求。若有类似全局重写规则,需添加例外:

RewriteCond %{REQUEST_URI} !^/websocket

4. 重新测试

用wscat再次验证连接:

wscat -c wss://mysite.url/websocket

额外注意事项

  • 需在Sucuri控制台将/websocket路径加入白名单,避免防火墙拦截
  • 确认后端Ratchet服务正常运行在127.0.0.1:8080,可通过netstat -tulpn | grep 8080检查进程状态

内容的提问来源于stack exchange,提问作者Cris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 14:14:54