Docker环境Laravel项目laravel-websockets无法连接无ping-pong日志求助
配置错误点及修复方案
1. Nginx 路由规则未触发Websocket转发逻辑
你配置的map $http_upgrade $type规则未被调用,所有请求默认走了PHP解析逻辑,没有转发到Websocket服务:
- 修改
location /块规则,根据请求类型转发到对应处理块:
location / { try_files $uri @$type; }
- 新增统计页面的转发规则,统计页面为HTTP请求,不走WS协议:
location /laravel-websockets { proxy_pass http://php-fpm:6001; proxy_set_header Host $host; }
2. Websocket服务监听地址错误
默认php artisan websocket:serve只会监听容器内部的127.0.0.1:6001,同网络下的Nginx容器通过php-fpm:6001访问时无法建立连接:
- 启动命令修改为监听所有网卡:
php artisan websocket:serve --host=0.0.0.0 --port=6001 - 同步修改
broadcasting.php的host配置,确保Laravel内部推送事件时可以正常连接Websocket服务:
'options' => [ 'cluster' => env('PUSHER_APP_CLUSTER'), 'scheme' => 'http', 'host' => '0.0.0.0', 'port' => 6001 ],
3. 额外排查项
- 进入php-fpm容器执行
ps aux | grep websocket确认supervisor启动的Websocket进程正常运行,无崩溃退出 - 执行
docker exec nginx容器名 ping php-fpm确认Nginx和php-fpm容器处于同一个Docker网络,网络连通正常 - 确认
.env文件中BROADCAST_DRIVER设置为pusher,所有PUSHER_*前缀配置和websockets.php中保持一致
内容的提问来源于stack exchange,提问作者Mohamed Ali Nakouri
相关产品推荐
相关产品推荐

