必须安装Swoole扩展并配置Nginx反向代理:先在宝塔软件商店为PHP安装Swoole扩展,再为域名添加反向代理并手动补全WebSocket升级头及超时参数,最后重载配置即可通过wss://正常访问。

要在宝塔面板中让Swoole WebSocket服务通过域名和HTTPS正常访问,必须完成Swoole扩展安装与Nginx反向代理联动配置,缺一不可——只装扩展不配代理,前端连不上ws://;只配代理不装扩展,PHP根本跑不动Swoole服务。
宝塔一键安装Swoole扩展
进入宝塔面板【软件商店】→ 找到已安装的PHP版本(如PHP 8.0)→ 点击【设置】→ 切换到【安装扩展】选项卡。
在扩展列表中找到【Swoole】,勾选后点击【安装】按钮。这一步操作起来很简单,后台自动处理依赖、编译、写入php.ini并重启PHP服务。
安装完成后,在终端执行php --ri swoole,若输出包含“swoole support => enabled”且无报错,说明扩展已生效。
Nginx反向代理WebSocket服务
确保Swoole服务已在后台运行(例如监听127.0.0.1:9502),再开始配置代理。
方法一:宝塔可视化反向代理(推荐新手)
① 进入【网站】→ 点击目标域名右侧【设置】→ 切换到【反向代理】选项卡 → 点击【添加反向代理】。
② 填写代理名称(如 ws-api),目标URL填http://127.0.0.1:9502(必须带http://前缀,否则502)。
③ 点击【提交】后,宝塔会自动生成location块,但默认不包含WebSocket升级头——此时需手动补全。
方法二:直接编辑站点配置文件(必须做)
点击【配置文件】按钮,定位到刚生成的location / { ... }块,在proxy_pass下方紧挨着插入三行:
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
这三行顺序不能错、缩进必须与proxy_pass一致,否则Nginx重载失败;漏掉任一,前端WebSocket连接会卡在pending或返回400错误。
HTTPS与超时参数加固
若域名已配置SSL证书,WebSocket需走wss://,此时必须保证反向代理能维持长连接。
在同一个location / { ... }块内,继续追加两行:
proxy_read_timeout 3600;
proxy_send_timeout 3600;
这两个值设太小会导致心跳断连;设为3600秒(1小时)是Swoole WebSocket生产环境通用底线值,配合服务端心跳检测可稳定维持连接。
保存配置 → 点击【重载配置】→ 用浏览器访问wss://your-domain.com测试连接,成功即表示全部配置完成。


















