生产环境下Laravel Reverb与React集成故障排查求助
生产环境Laravel Reverb广播404错误排查方案
1. 核对Reverb核心配置一致性
- 确认
.env中REVERB_APP_ID、REVERB_APP_KEY、REVERB_APP_SECRET与前端laravel-echo配置完全匹配,无大小写、空格差异 - 检查
REVERB_HOST设置为生产域名(不带http/https前缀,例如REVERB_HOST=your-prod-domain.com) - 验证
config/reverb.php中host字段是否正确读取环境变量:'host' => env('REVERB_HOST', 'localhost')
2. 检查Apache的Reverb API转发规则
- 尽管WebSocket连接返回101状态,仍需确认Apache是否将Reverb的HTTP API请求(非WebSocket)转发到Reverb服务,添加反向代理规则:
ProxyPass /api/reverb http://127.0.0.1:8080/api/reverb ProxyPassReverse /api/reverb http://127.0.0.1:8080/api/reverb - 确保Apache已启用
mod_proxy、mod_proxy_http、mod_proxy_wstunnel模块,且开启ProxyRequests On
3. 验证广播驱动配置
- 打开
config/broadcasting.php,确认默认驱动为'reverb',且reverb配置项的app_id、key、secret、host与.env完全一致 - 检查广播事件的
broadcastOn方法返回的频道名称,与前端echo.channel()/echo.private()订阅的频道完全匹配(私有频道需带private-前缀)
4. 排查Reverb服务运行状态
- 执行
php artisan reverb:status,确认服务正常监听指定端口(默认8080) - 查看
storage/logs/reverb.log日志,排查是否存在连接权限、端口占用等错误 - 确保以生产环境配置启动Reverb:
php artisan reverb:start --env=production
5. 检查Nginx前端跨域与转发配置
- 确认Nginx允许前端向后端Reverb API发送请求,添加跨域响应头:
add_header Access-Control-Allow-Origin "https://your-frontend-domain.com"; add_header Access-Control-Allow-Methods "GET, POST, OPTIONS"; add_header Access-Control-Allow-Headers "Content-Type, Authorization, X-Requested-With"; - 确保Nginx未拦截
/api/reverb路径,正确转发至后端Apache服务
6. 清除生产环境缓存
- 执行以下命令清除配置与缓存:
php artisan config:clear php artisan cache:clear - 重启Apache、Nginx及Reverb服务,确保所有配置变更生效
内容的提问来源于stack exchange,提问作者pbrune
相关产品推荐
相关产品推荐

