Внешний веб-сервер не может общаться с EC2 flask API - PullRequest
0 голосов
/ 22 марта 2020

Я действительно не в своем духе, когда дело доходит до сетей.

У меня есть сервер EC2, работающий linux, с активным flask API, работающим.

У меня есть функция PHP на общем сервере hostgator:

function sendAPI($threadid, $teamid) {
    $url = "http://ec2-...amazonaws.com:9999/api2?id1=" . $teamid . "&thread=" . $threadid;

    $ch = curl_init();
    $optArray = array(
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true
    );
    curl_setopt_array($ch, $optArray);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

Аналогичная функция работает без проблем с сервером API telegram:

function sendMessage($chatID, $messaggio, $token) {
    $url = "https://api.telegram.org/bot" . $token . "/sendMessage?chat_id=" . $chatID;
    $url = $url . "&text=" . urlencode($messaggio);
    $ch = curl_init();
    $optArray = array(
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true
    );
    curl_setopt_array($ch, $optArray);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}

При переходе на http://ec2-...amazonaws.com:9999/api2?id1=1&thread=1 из моего собственный веб-браузер, API успешно принимает запрос.

Входящие правила для экземпляра EC2: Server accepts SSH and API call from me, and accepts info from Telegram API servers. Should accept from external web server, but does not.

Обратите внимание, IP-адрес веб-сайта, также тот же IP указан в списке на CPanel:

Имя домена: novociv.org Домен верхнего уровня: ORG (организация) Поиск IP-адреса: 108.167.142.88

Из моих ограниченных знаний о сети, это все должно работать правильно. Однако, когда вызывается функция PHP, она возвращает нулевой результат, и сервер EC2 не реагирует. Я не знаю, как устранить неполадки отсюда, потому что я не знаю, где найти сообщения об ошибках. Я предполагаю, что EC2 просто блокирует трафик c от внешнего сервера, но я не знаю, что не так (если вообще что-то) с моими входящими правилами, так как EC2 успешно принимает запросы от моего ноутбука.

1 Ответ

0 голосов
/ 25 марта 2020

Оказывается, что hostgator не имеет открытого порта 9999 по умолчанию. Эту проблему можно решить, запросив открытый порт hostgator 9999 на этом сервере, или переместив приложение flask на другой порт, который уже открыт.

...