Laravel项目API本地正常,服务器端报cURL 28超时错误求助
Laravel服务器调用API出现cURL error 28(连接超时)的原因分析
问题描述
本地环境调用API正常,但部署到服务器的Laravel项目调用时出错,怀疑和HTTPS配置有关。报错信息:
Error: cURL error 28: Failed to connect to url port 80: Connection timed out for http://url/stock/
调用API的代码:
private function connectToAPI ($headers, $url) { try { $response = Http::withHeaders($headers)->get($url); } catch (Exception $e) { Log::error("Error: " . $e->getMessage()); return false; } if (!isset($response) || $response->status() != 200) { Log::error("Error: " . $response->body()); return false; } return $response; }
可能的原因
- 服务器出站端口限制:生产服务器的防火墙或安全组大概率封禁了80端口的出站请求。本地环境通常没有严格的端口管控,而服务器会限制非必要端口,尤其是未加密的HTTP(80端口)流量。
- API协议不匹配:目标API可能仅支持HTTPS(443端口),但你的请求使用了HTTP(80端口),导致目标服务器没有监听80端口,最终连接超时。
- 网络访问限制:服务器所在的网络环境无法访问目标API的IP,比如运营商屏蔽、机房路由策略限制,导致请求无法送达目标服务器。
- DNS解析异常:服务器的DNS服务无法正确解析目标API的域名,导致请求找不到正确的服务器地址,引发超时。可以在服务器上执行
ping 目标域名或nslookup 目标域名验证解析是否正常。 - API服务器负载问题:目标API服务器当前负载过高,无法及时响应请求,但这种情况本地调用也可能出现,和你描述的本地正常情况匹配度较低,可作为次要排查项。
内容的提问来源于stack exchange,提问作者José Vicente López Delgadillo
相关产品推荐
相关产品推荐

