Сбой HTTP-запросов JavaScript в экземпляре Amazon ec2

#node.js #amazon-web-services #amazon-ec2 #server #axios

#node.js #amazon-веб-сервисы #amazon-ec2 #сервер #axios

Вопрос:

Я запускаю сервер node express на экземпляре Amazon ec2. Я могу подключиться к веб-сайту на своем локальном компьютере из браузера и могу просматривать страницы только с локальными файлами, но при доступе к странице, которая выполняет внешний HTTP-запрос, она просто зависает. Я полагаю, что это как-то связано с тем, что мои входящие или исходящие правила каким-то образом запрещают это, но я недостаточно разбираюсь в сетях, чтобы решить это самостоятельно.

Это функции, которые не работают за кулисами:

 const axios = require('axios').default;
const freelancer = axios.create({
    baseURL: 'https://www.freelancer.com/api/',
    headers: {
        'freelancer-oauth-v1': process.env.FREELANCER_TOKEN
    }
});

/* Get User By Id */
async function getUserById(user_id) {
    const result = await freelancer.get(`/users/0.1/users/${user_id}/`)
    return result.data.result;
}

const GitHub = require('github-api');
const gh = new GitHub({
    username: process.env.GHUSER,
    password: process.env.GHPASS
});
const getRepos = async function () {
    const user = await gh.getUser();
    return new Promise(async (resolve, reject) => {
        await user.listStarredRepos(function (err, repos) {
            if (err) reject(err);
            resolve(repos);
        });
    });
}
  

Мои маршрутизаторы выглядят так:

 var express = require('express');
var router = express.Router();
const freelancer = require('../service/Freelancer');

/* GET home page. */
router.get('/', async (req, res, next) => {
  const reviews = await freelancer.getMyReviews();
  const self = await freelancer.getSelfData();

  res.render('contact', {
    header: 'Check out all my reviews!',
    lead: '',
    paragraphtext: 'Your review could be next on this list!',
    reviews,
    self
  });
});
  

Комментарии:

1. Откуда делать запросы? От экземпляра к экземпляру? Вам необходимо предоставить более подробную информацию. Какова ваша настройка, что вы делаете, чего вы пытаетесь достичь?

2. Довольно простой вопрос: я запускаю сервер узлов, совершаю вызовы с помощью axios, когда он попадает на маршрутизатор. Посмотрите, я обновил, чтобы вы могли видеть код.

3. Некоторые службы явно блокируют диапазоны IP-адресов для AWS. Может быть одна из таких ситуаций. Можете ли вы самостоятельно подтвердить, что www.freelancer.com/api , например, если вы просто скручиваете его из экземпляра?

4. Получение подобных ошибок: javascript curl: (7) Failed to connect to www.github.com port 443: Connection timed out. Он говорит, когда я пытаюсь использовать no https: "301 moved permanently." Поэтому я добавляю https, и он просто зависает.

5. О, черт, это исправлено. Я добавил новые правила для HTTPS-соединений. @Marcin спасибо, что дали мне эту подсказку!

Ответ №1:

На основе комментариев.

Проблема была вызвана использованием HTTP для www.github.com . Решением было использовать HTTPS.