Laravel + Pusher Websocket在HTTPS 443端口部署后无法使用求助
解决Laravel+Pusher生产环境cURL error 7(网络不可达)问题
本地运行Laravel+Pusher JS+Vue3实时聊天功能正常,但部署到生产服务器后出现以下报错:
"message": "Pusher error: cURL error 7: Failed to connect to 54.217.244.226: Network is unreachable (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://api-eu.pusher.com/apps/1694685/events...."
当前Pusher配置如下:
'pusher' => [ 'driver' => 'pusher', 'key' => env('PUSHER_APP_KEY'), 'secret' => env('PUSHER_APP_SECRET'), 'app_id' => env('PUSHER_APP_ID'), 'options' => [ 'cluster' => env('PUSHER_APP_CLUSTER'), 'host' => env('PUSHER_HOST') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com', 'port' => env('PUSHER_PORT', 443), 'scheme' => env('PUSHER_SCHEME', 'https'), 'encrypted' => true, 'useTLS' => true, ], 'client_options' => [ // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html ], ],
排查与解决步骤
1. 检查生产服务器网络连通性
cURL error 7本质是服务器无法建立到Pusher API的网络连接,先从网络层面排查:
- 在生产服务器终端执行
ping api-eu.pusher.com,查看是否能正常解析并收到响应 - 执行
curl -v https://api-eu.pusher.com/apps/1694685/events,查看详细的连接报错信息 - 确认服务器防火墙/安全组是否允许出站443端口(HTTPS协议),或者是否限制了访问Pusher的IP段
2. 验证Pusher配置准确性
- 确认
.env文件中PUSHER_APP_CLUSTER的值为eu(与报错中的api-eu.pusher.com集群匹配),避免生产环境和本地环境的集群配置不一致 - 核对
.env里的PUSHER_APP_KEY、PUSHER_APP_SECRET、PUSHER_APP_ID是否与Pusher后台的应用信息完全一致 - 可尝试手动指定host,避免环境变量拼接出错,修改
config/broadcasting.php中的host配置:'host' => 'api-eu.pusher.com',
3. 配置Guzzle客户端(若需代理)
如果生产服务器需要通过代理访问外部服务,在client_options中添加代理配置:
'client_options' => [ 'proxy' => 'http://你的代理服务器地址:端口', 'timeout' => 10, // 增加超时时间避免连接超时 ],
4. 检查服务器DNS解析
如果服务器DNS解析异常,会导致无法正确解析Pusher的API域名:
- 执行
nslookup api-eu.pusher.com,查看返回的IP是否包含54.217.244.226或其他Pusher官方IP - 可尝试更换服务器DNS为公共DNS(如8.8.8.8),再测试连接
5. 排除Pusher集群故障
可临时确认Pusher eu集群的服务状态,排除集群级别的故障(概率较低,但可快速排除)
内容的提问来源于stack exchange,提问作者Мадияр Маселбек
相关产品推荐
相关产品推荐

