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

使用PHP Ratchet WebSocket在Firefox中无法建立连接的问题

问题排查与解决方案

1. 验证Firefox的WSS证书兼容性

Firefox对SSL证书的验证逻辑比其他浏览器更严格,即使证书整体有效,也需确认:

  • 证书包含wss://cstechnologyindia.com域名(或匹配的通配符域名),无域名不匹配问题
  • 证书链完整,中间证书已正确部署,可通过服务器执行命令检查:openssl s_client -connect cstechnologyindia.com:443,查看返回的证书链是否无缺失
  • 在Firefox的about:config中确认network.websocket.allowInsecureFromHTTPS为false(正式环境需保持此设置)

2. 修正Apache反向代理配置

Ratchet服务运行在8081端口,需确保Apache的反向代理配置正确适配WebSocket协议,Firefox对代理头的要求更严格:

  • 确认mod_proxy_wstunnel模块已启用,执行命令验证:apache2ctl -M | grep proxy,确保proxy_wstunnel_module在输出列表中
  • 调整Apache的虚拟主机配置,添加WebSocket转发规则:
<Location /websocket1>
    ProxyPass ws://localhost:8081/websocket1
    ProxyPassReverse ws://localhost:8081/websocket1
    ProxyPreserveHost On
    RequestHeader set Upgrade "websocket"
    RequestHeader set Connection "upgrade"
</Location>
  • 注意外层WSS由Apache的443端口处理,内部转发到本地8081的ws协议即可,无需在Ratchet侧配置SSL

3. 检查Ratchet服务的绑定地址

本地运行时可能绑定127.0.0.1,部署后需确保服务绑定到0.0.0.0,否则仅能本地访问:

$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new YourWebSocketHandler()
        )
    ),
    8081,
    '0.0.0.0' // 必须设置为0.0.0.0,而非127.0.0.1
);
$server->run();

4. 确认防火墙与端口规则

  • 检查服务器本地防火墙(iptables/ufw)是否允许8081端口的本地通信,执行ufw status或iptables -L验证
  • 确认外部请求是通过Apache的443端口转发,而非直接访问8081端口(WSS默认使用443端口,用户请求地址为wss://cstechnologyindia.com/websocket1,无需暴露8081到公网)

5. 排除Firefox本地环境干扰

  • 清除该域名的缓存与Cookie,或直接用隐私浏览模式测试,排除扩展(如广告拦截器)对WebSocket连接的阻止

6. 查看日志定位错误

  • 检查Apache错误日志(通常路径/var/log/apache2/error.log),查看WSS请求转发时的异常信息
  • 查看Ratchet服务的运行日志,确认是否有连接请求到达但处理失败的记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 19:38:10