【发布时间】: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