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

Hostinger VPS+CloudPanel+Nginx部署PHP WebSocket连接失败求助

排查WebSocket服务部署问题的步骤

1. 检查服务端绑定地址

本地测试时绑定127.0.0.1或localhost可正常访问,但VPS上必须绑定0.0.0.0才能允许外部连接。打开你的socket.php,找到socket_bind代码行,确认绑定地址为:

socket_bind($socket, '0.0.0.0', 9000);

若绑定的是127.0.0.1,服务仅能被VPS本地访问,外部浏览器无法建立连接。

2. 验证端口监听状态

执行以下命令检查9000端口是否被PHP进程正确监听:

ss -tulpn | grep 9000

如果输出中看不到php进程和0.0.0.0:9000的记录,说明服务未成功启动或绑定地址错误。此时可执行php -l socket.php检查脚本语法是否存在错误。

3. 双重检查防火墙规则

除UFW外,Hostinger VPS自带硬件防火墙(在Hostinger后台的VPS管理面板中),需确保9000端口在两处都已开放:

  • UFW规则:执行ufw status确认9000/tcp已被允许
  • Hostinger硬件防火墙:登录Hostinger后台,找到VPS防火墙设置,添加允许9000端口的入站规则

4. 修正Nginx代理与SSL配置

普通PHP Socket脚本默认不处理SSL,直接用wss://mysite.app:9000/wsapp/连接会失败。正确做法是让Nginx做SSL终止,客户端通过443端口连接wss,由Nginx代理到后端的ws服务:

示例Nginx配置(适配你的域名):

server {
    listen 443 ssl;
    server_name mysite.app;

    # SSL证书配置(CloudPanel一般会自动生成,确保路径正确)
    ssl_certificate /path/to/your/cert.pem;
    ssl_certificate_key /path/to/your/key.pem;

    location /wsapp/ {
        proxy_pass http://localhost:9000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

配置完成后,客户端应连接wss://mysite.app/wsapp/(无需添加9000端口)。

5. 检查PHP环境依赖

  • 确认sockets扩展已启用:执行php -m | grep sockets,若无输出,需在CloudPanel的PHP设置中勾选启用该扩展
  • 版本兼容性:确保VPS上的PHP版本与本地测试环境一致,避免版本差异导致的语法或函数兼容问题

6. 排查进程运行限制

  • 执行getenforce检查SELinux状态,Ubuntu默认关闭,若显示Enforcing,可临时执行sudo setenforce 0测试,或添加允许PHP监听端口的规则
  • 确保执行php socket.php的用户(如www-data或你的SSH用户)无系统网络权限限制

7. 测试基础连接

先在VPS本地测试ws连接,执行:

wscat -c ws://localhost:9000/wsapp/

若本地能连接,说明服务端正常,问题出在外部网络或SSL配置;若本地也连不上,需进一步调试socket_accept卡住的原因(如脚本死循环、资源占用等)


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 05:17:10