我有一个API托管在一个web服务器上,该服务器运行在端口5001上的amazon EC2上。当我从chrome浏览器调用API时,它是有效的,但当我从PHP HTTP客户端调用它时,我会得到错误:
Failed to connect to [my public domain].compute.amazonaws.com port 5001: Connection refused
- web服务器运行在HTTP上,而不是HTTPS
- 对于EC2实例安全组,我为端口5001添加了
Custom TCP
规则 - 当我在其他网站(即www.google.com(上使用相同的HTTP客户端时,它运行良好
下面是我请求EC2-主机API的PHP源代码。
<?php
header('Content-Type: application/json');
$url = $_GET['url'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$server_output = curl_exec($ch);
if (curl_errno($ch)) {
print curl_error($ch);
}
curl_close($ch);
if ($server_output == "OK") { echo "ok"; } else { echo $server_output; }
?>
这个设置有什么问题?
它是通过在PHP web服务器上为被防火墙阻止的传出请求打开端口5001来重新打开的。