从PHP HTTP客户端调用亚马逊上托管的API时,连接被拒绝



我有一个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来重新打开的。

最新更新