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

本地使用Laravel Reverb遇cURL错误503,任务失败求排查

Laravel Reverb 事件分发失败(cURL 503 错误)解决方案

问题重现

触发事件时抛出以下错误:

GuzzleHttp\Exception\RequestException: cURL error 56: Received HTTP code 503 from proxy after CONNECT for https://sockets.my-app/apps/154811/events?auth_key=ht3fidxq3ibryisgbwvs&auth_timestamp=1713439684&auth_version=1.0&body_md5=4d4063e1f80149f3f49cd0ca8f7b0e9b&auth_signature=09cc000f73028b8a2f0467bbdac413153847ad336247071a111c64f63aa2f289 in /var/www/may-app/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php:211

相关配置与代码:

  • .env 核心配置:
    REVERB_HOST="sockets.my-app"
    REVERB_PORT=443
    REVERB_SCHEME=https
    REVERB_SERVER_HOST=0.0.0.0
    REVERB_SERVER_PORT=8080
    
  • Nginx 反向代理配置(针对sockets.my-app)
  • 事件分发代码:CommentCreated::dispatch($comment);
  • 任务日志显示事件执行失败

解决方案

1. 确认 Reverb 服务正在运行

503 错误最常见的原因是后端服务未启动:

  • 手动启动 Reverb:php artisan reverb:start,观察启动日志是否有报错
  • 检查进程状态:ps aux | grep reverb,确认进程存在且正常运行

2. 修复本地域名解析

本地环境下sockets.my-app可能未正确映射到本地IP:

  • 编辑本地 hosts 文件(Windows 为C:\Windows\System32\drivers\etc\hosts,Linux/macOS 为/etc/hosts),添加一行:
    127.0.0.1 sockets.my-app
    
  • 保存后刷新DNS缓存(Windows:ipconfig /flushdns;Linux/macOS:sudo dscacheutil -flushcache)

3. 排除代理环境干扰

错误提示涉及代理,说明请求被错误路由到了全局代理:

  • 清空系统代理设置,或在 Laravel 中强制 Gzzle 跳过代理:
    编辑config/reverb.php,添加 Guzzle 配置项:
    'guzzle' => [
        'proxy' => '',
    ],
    
  • 或在.env中添加/修改以下变量:
    HTTP_PROXY=
    HTTPS_PROXY=
    NO_PROXY=127.0.0.1,sockets.my-app
    

4. 验证 Nginx 配置有效性

  • 检查 Nginx 配置语法:nginx -t,确保无语法错误
  • 检查 SSL 证书权限:确保 Nginx 运行用户(通常是www-data或nginx)能读取证书文件:
    sudo chown nginx:nginx /etc/ssl/certs/***.fr.cer /etc/ssl/private/***.fr.key
    sudo chmod 600 /etc/ssl/private/***.fr.key
    
  • 直接访问 Reverb 原生端口:打开浏览器访问http://localhost:8080,若能正常响应则说明 Nginx 转发存在问题,需重新检查反向代理配置

5. 检查事件广播配置

  • 确认CommentCreated事件已实现ShouldBroadcast接口:
    use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
    
    class CommentCreated extends Event implements ShouldBroadcast
    {
        // ... 事件逻辑
        public function broadcastOn()
        {
            return new Channel('comments'); // 确保频道定义正确
        }
    }
    
  • 检查.env中广播驱动是否设置为 Reverb:
    BROADCAST_DRIVER=reverb
    

内容的提问来源于stack exchange,提问作者David Auvray

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 19:47:45