Laravel 11 Reverb生产环境触发事件报BroadcastException: Pusher Error
Laravel 11 Reverb部署Apache后触发事件报404错误的解决办法
问题描述
本地环境下Laravel 11 Reverb运行正常,但部署到Apache生产服务器后,触发任意事件时均抛出BroadcastException: Pusher Error (Not found)错误。
现有配置信息
环境变量配置
REVERB_APP_ID=401372 REVERB_APP_KEY=vcgwou45dwfj3qek4ixsv REVERB_APP_SECRET=o1jvqub6yshtowosmgbz REVERB_HOST="sub.doamin.com" REVERB_PORT=443 REVERB_SCHEME=https # 本地Reverb服务监听地址(已注释) #REVERB_SERVER_HOST="0.0.0.0" # 本地Reverb服务监听端口(已注释) #REVERB_SERVER_PORT=8080 VITE_REVERB_APP_KEY="${REVERB_APP_KEY}" VITE_REVERB_HOST="${REVERB_HOST}" VITE_REVERB_PORT="${REVERB_PORT}" VITE_REVERB_SCHEME="${REVERB_SCHEME}"
Reverb启动日志(执行php artisan reverb:start --debug)
正在0.0.0.0:8080启动服务器(对应域名sub.domain.com) 连接已建立.....
触发事件代码
broadcast(new FriendRequestReceived($sender, $receiver));
事件类broadcastOn方法
public function broadcastOn(): array { return [ new PrivateChannel("friend-request.{$this->receiver->id}"), ]; }
Apache 443虚拟主机配置
ProxyPass /app ws://0.0.0.0:8080/app ProxyPassReverse /app ws://0.0.0.0:8080/app
解决步骤
- 恢复内部通信配置
Laravel后端广播事件时,需要直接与Reverb服务建立内部通信,依赖REVERB_SERVER_HOST和REVERB_SERVER_PORT配置。取消这两个变量的注释:
REVERB_SERVER_HOST="0.0.0.0" REVERB_SERVER_PORT=8080
- 修正Apache代理配置
生产环境使用HTTPS,WebSocket代理需匹配协议,同时明确指向本地服务地址:
# 先确认已启用mod_proxy和mod_proxy_wstunnel模块 ProxyPass /app wss://127.0.0.1:8080/app ProxyPassReverse /app wss://127.0.0.1:8080/app
若服务器未启用相关模块,以Ubuntu系统为例执行以下命令:
a2enmod proxy proxy_wstunnel systemctl restart apache2
- 确保Reverb服务持续运行
不要直接通过终端启动Reverb,使用后台进程方式保持服务在线:
nohup php artisan reverb:start > /dev/null 2>&1 &
也可配置supervisor等进程管理工具实现服务自动重启。
- 清理配置缓存
部署后刷新配置缓存,确保新配置生效:
php artisan config:clear php artisan cache:clear
- 检查防火墙设置
确认服务器防火墙允许本地访问8080端口,避免Laravel后端无法连接Reverb服务。
内容的提问来源于stack exchange,提问作者Muntasir Hasan
相关产品推荐
相关产品推荐

