Исходящий вызов PHP-cURL работает на локальном хосте, но не на веб-сайте, размещенном на AWS, несмотря на то, что разрешен весь трафик

Я использую curl на своем веб-сайте wordpress (размещенном на aws linux), чтобы получить некоторую информацию от нескольких API. Проблема: я получаю тайм-аут подключения только от одного из API. Я также связался с поставщиком API, и они сказали, что API работает нормально. Тот же код работал нормально 5 дней назад.

Теперь, после просмотра стека и запуска некоторых вариантов, результаты следующие: 1) Тот же код работает на локальном хосте. 2) Это также работает в почтальоне. 3) Код был скопирован с Почтальона на веб-сайт, но время ожидания все равно истекло. 4) Я отредактировал nacl aws vpn, чтобы разрешить весь трафик как входящий, так и исходящий в дополнение к тем, которые рекомендованы aws, по-прежнему получая тайм-аут.

Это основная функция, которую я использую, скопированная из почтальона, а затем измененная:

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;
    }
}

Вот ошибка результата/завитка (то же самое для http, за исключением изменения номера порта на 80):

    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? Как именно я могу узнать, что вызывает проблему и исправить ее.


person Deepon GhoseRoy    schedule 11.06.2019    source источник
comment
Можете ли вы поделиться, как именно вы разрешили входящий и исходящий трафик?   -  person matiit    schedule 11.06.2019
comment
@matiit VPC › NACL › выберите NACL › Ниже выберите вкладку входящего/исходящего трафика › Edit Rules. Там я просто добавил правило со всем трафиком, 0.0.0.0/0 Разрешить   -  person Deepon GhoseRoy    schedule 11.06.2019


Ответы (1)


Вы получаете эту проблему, потому что IP-адреса Amazon закрыты для доступа к нашему API. Вы можете отправить свои статические IP-адреса в Amazon, и мы их добавим.

person Travelpayouts    schedule 11.06.2019
comment
Мы используем эластичный beanstalk, где я могу найти статический IP-адрес? Название сайта: www.movingisliving.in. Мы были на связи с вашим персоналом поддержки с последних 5 дней, кстати. - person Deepon GhoseRoy; 11.06.2019
comment
Я сделал nslookup и получил это: 185.82.212.199, а ping дает 13.233.171.240 - person Deepon GhoseRoy; 11.06.2019
comment
Elastic Beanstalk не имеет статический IP-адрес, по крайней мере, по умолчанию. - person ceejayoz; 11.06.2019
comment
@DeeponGhoseRoy хорошо. Оставайтесь на связи со службой поддержки, они помогут и решат вашу проблему - person Travelpayouts; 11.06.2019
comment
Сотрудники службы поддержки @Travelpayouts не отвечают. - person Deepon GhoseRoy; 12.06.2019
comment
@ceejayoz, по-видимому, во время создания ebs необходимо настроить в VPC и добавить шлюз NAT. - person Deepon GhoseRoy; 12.06.2019
comment
@DeeponGhoseRoy, пожалуйста, отправьте номер вашего билета в службу поддержки - person Travelpayouts; 12.06.2019