【问题标题】:PHP Website Curl connecting to AWS EC2 fails on timeout连接到 AWS EC2 的 PHP 网站 Curl 超时失败
【发布时间】:2018-06-22 20:57:10
【问题描述】:

我在深入了解这一点时遇到了一些真正的麻烦。

问题

我有一个在 AWS EC2 端口 8080 上运行的简单 Web 服务,需要连接到它并从托管在 cPanel 主机上的网站上传文件。

cPanel 站点上的客户端使用 PHP curl 命令进行连接:

$file = fopen($targetFilePath, 'r');

// Connecting to website.
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 86400); // 1 Day Timeout
curl_setopt($ch, CURLOPT_INFILE, $file);
curl_setopt($ch, CURLOPT_BUFFERSIZE, 128);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($targetFilePath));
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cache-Control: no-cache", "Content-Type: $mimeType"));
$response = curl_exec($ch);
$err = curl_error($ch);
$httpStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close ($ch);

但我总是收到一个无用的错误:

发生错误:无法连接到 ec2-xx-xx-xx-xx.eu-west-1.compute.amazonaws.com 端口 8080:连接超时

将 curl 设置为详细,我刚刚得到的没有帮助

  • 正在尝试 xx.xx.xx.xx...
  • TCP_NODELAY 设置
  • 连接到 xx.xx.xx.xx 端口 8080 失败:连接超时
  • 无法连接到 ec2-xx-xx-xx-xx.eu-west-1.compute.amazonaws.com 端口 8080:连接超时
  • 关闭连接 0

对于此故障排除,我已将 AWS 安全组中的所需端口开放给所有 IP,因此这不应阻止连接。一旦我让它工作,我会再次锁定它。

我尝试过的事情

  • 客户端上的一个简单 curl,只有一个指向同一服务器的 URL 参数 - 同样的错误
  • 上述对 google.co.uk 的简单调用 - 运行良好
  • 完全相同的 PHP 网站和 curl 代码,但在我的本地主机上 - 工作正常
  • 如上所述将 curl 设置为详细 - 没什么用

因此,总而言之,问题只存在于客户端和服务器的这种特定组合上。其他客户端与服务器正常工作,麻烦客户端上的网站可以正常连接到其他目的地。

由于 AWS 安全组允许所有 TCP 流量进入,这真是令人头疼!

感谢您的帮助!

【问题讨论】:

    标签: php amazon-web-services curl amazon-ec2


    【解决方案1】:

    您必须确保本地 curl 客户端从命令行连接到远程服务点并返回响应。

    消息Connection timed out 表示您没有连接到服务。服务未运行,或者服务端口被防火墙或安全组设置阻止。

    试试这个:

    1. 在实例或 ELB 安全组上向世界开放 8080 端口。

    2. 在实例应用防火墙上向世界开放端口 8080。 (!)

    3. 在实例上使用命令行 curl 以确保正在运行。

    忘记客户端代码,直到命令行测试有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多