PHP-cURL 出站调用在本地主机中有效,但在 AWS 托管网站中无效,尽管允许所有流量

PHP-cURL outbound call works in localhost but not in AWS hosted website despite allowing all traffic

我在我的 wordpress 网站(托管在 aws linux 上)中使用 curl 从几个 api 获取一些信息。问题:我仅从 api 之一获得连接超时。我也联系了 api 供应商,他们说 api 工作正常。同样的代码在 5 天前运行良好。

现在经过堆栈和 运行 一些变体后,结果是: 1)相同的代码在本地主机上工作。 2)它也适用于邮递员。 3) 代码已从 Postman 复制到网站,但仍然超时。 4) 我编辑了 aws vpn nacl 以允许除了 aws 推荐的流量之外的所有入站和出站流量,仍然超时。

这是我使用的基本功能,从postman复制过来然后修改:

function my2get_curl($myurl){
    $curl = curl_init();

    curl_setopt_array($curl, array(
        CURLOPT_URL => $myurl,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_CONNECTTIMEOUT => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_USERAGENT =>$user_agent,
        CURLOPT_HTTPHEADER => array(

                "cache-control: no-cache",
        ),
    ));

    $response = curl_exec($curl);
    $err = curl_error($curl);
    $info = curl_getinfo($curl);
    curl_close($curl);

    if ($err) {
      echo "  cURL Error #:" . $err;
      echo json_encode($info,JSON_PRETTY_PRINT);

      die('');
    } else {
      return $response;
    }
}

这是 result/curl 错误(除了端口号更改为 80 外,http 也一样):

    Failed to connect to www.travelpayouts.com port 443: Connection timed out

curl_info:

    { "url": "https:\/\/www.travelpayouts.com\/whereami?locale=en&callback=useriata&ip=<my.ip.address>", "content_type": null, "http_code": 0, "header_size": 0, "request_size": 0, "filetime": -1, "ssl_verify_result": 0, "redirect_count": 0, "total_time": 21.03931, "namelookup_time": 0.066799, "connect_time": 0, "pretransfer_time": 0, "size_upload": 0, "size_download": 0, "speed_download": 0, "speed_upload": 0, "download_content_length": -1, "upload_content_length": -1, "starttransfer_time": 0, "redirect_time": 0, "redirect_url": "", "primary_ip": "", "certinfo": [], "primary_port": 0, "local_ip": "", "local_port": 0 }

代码或(更有可能)aws 设置有问题吗?我该如何找出导致问题的原因并解决它。

您遇到此问题是因为亚马逊 IP 已关闭,无法访问我们的 API。您可以在 Amazon 中发送您的静态 IP,我们将添加它们。