我有一些真正的麻烦到底。 p>
我有一个在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:连接超时
将卷曲设置为详细,我刚刚得到
时没有帮助
- 尝试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,因此不应阻止连接。一旦我开始工作,我会再次锁定它。
总而言之,问题只存在于客户端和服务器的这种特定组合上。其他客户端可以正常使用服务器,麻烦的客户端上的网站可以很好地连接到其他目的地。
由于AWS安全组允许所有TCP流量进入,因此它真正令人头疼!
感谢您的帮助!
答案 0 :(得分:0)
您必须确保本地curl客户端从命令行连接到远程服务点,然后返回响应。
消息Connection timed out
表示您未连接到该服务。该服务未运行,或者服务端口被防火墙或安全组设置阻止。
试试这个:
在实例或ELB安全组上向世界打开端口8080.
在实例应用程序防火墙上向世界打开端口8080。 (!)
在实例上使用命令行curl以确保正在运行。
忘记客户端代码,直到命令行测试工作。