#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.