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

在Bitnami LAMP环境配置WebSocket遇连接拒绝问题求助

解决AWS EC2 Bitnami LAMP环境中WebSocket连接拒绝问题

咱们一步步排查解决这个连接拒绝的问题,大概率是端口访问限制、绑定地址不对或者客户端地址配置错误导致的:

  • 检查EC2安全组端口开放
    AWS EC2的安全组默认会阻止非标准端口的入站流量,你需要手动添加8090端口的允许规则:

    1. 登录AWS控制台,进入EC2实例的安全组设置
    2. 添加一条入站规则:协议选TCP,端口范围填8090,来源根据需求设置(测试阶段可以暂时设为0.0.0.0/0允许所有IP访问)
  • 修正PHP Socket脚本的绑定地址
    你当前把HOST_NAME设为localhost,这会让脚本只绑定到服务器的127.0.0.1本地回环地址,外部请求根本连不上。把它改成绑定所有网卡的地址:

    define('HOST_NAME',"0.0.0.0");
    define('PORT',"8090");
    

    这样脚本才能接受来自EC2公网IP的连接请求。

  • 调整客户端WebSocket连接地址
    客户端代码里用ws://localhost:8090只有在你直接在EC2服务器上运行浏览器时才有效,外部客户端访问的话,localhost指的是用户自己的本地机器,不是你的EC2服务器。你需要把地址改成EC2的公网IP或者绑定的域名:

    var websocket = new WebSocket("ws://你的EC2公网IP:8090/includes/socket_handlers/php-socket.php");
    
  • 检查Bitnami自带防火墙规则
    Bitnami环境默认可能启用了ufw防火墙,需要确认8090端口是否被允许:

    1. 登录EC2服务器,执行命令查看防火墙状态:sudo ufw status
    2. 如果没看到8090端口的允许规则,执行:sudo ufw allow 8090/tcp
    3. 重启防火墙生效:sudo ufw reload
  • 验证端口是否被占用或脚本是否正常运行
    可以用以下命令检查8090端口是否被其他进程占用:

    sudo netstat -tulpn | grep 8090
    # 或者用lsof
    sudo lsof -i :8090
    

    如果端口被占用,要么终止占用进程,要么修改PHP脚本里的PORT值换个未被使用的端口。另外还要确保你的php-socket.php脚本是正常运行的,可以直接在服务器上执行php includes/socket_handlers/php-socket.php启动脚本,看是否有报错。

  • 确认PHP sockets扩展已启用
    虽然Bitnami的PHP默认一般会启用sockets扩展,但还是可以验证一下:

    php -m | grep sockets
    

    如果没有输出sockets,需要修改PHP配置文件启用扩展(Bitnami的PHP配置文件一般在/opt/bitnami/php/etc/php.ini,找到sockets相关行去掉注释,然后重启Apache或者PHP-FPM)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:20:44