Приложение Node.js, размещенное в EC2 - невозможно удаленно подключиться к порту
Обновление: Оказывается, единственной проблемой было то, что я был за брандмауэром, который заблокировал некоторые порты, но не 8000.
Изменить: TL; DR: не удается подключиться к порту 9000 удаленно, но порт 8000 в порядке, и я не знаю почему:(
У меня есть это приложение node.js, которое работает на порту 8000, и другое ( http-proxy), работающее на порту 9000.
Запускать их на моем компьютере - это нормально, но у меня возникают некоторые проблемы, когда я устанавливаю их на сервере (экземплярEC2 - я открыл порты в группе безопасности веб-консоли[1]). Приложение работает нормально, но я не могу подключиться к прокси извне. Я пытался $ telnet localhost 9000
на сервере, и он подключается, так что я думаю, это хороший знак.
Еще одна вещь, которую я заметил, это то, что если я пытаюсь запускать приложения отдельно, я получаю те же результаты, а именно: 8000 - ОК, 9000 - NOTOK:<. Однако, если я изменю порт, который использует прокси с 9000 на 8000, он будет работать. И если я переключаю порты, т.е. приложение: 9000 и прокси: 8000, я могу подключиться к прокси, но не к приложению. Я также пробовал другие цифры, но это тоже не исправит.
Я предполагаю, что есть что-то действительно глупое, которое не имеет ничего общего с самим приложением и которое мне не хватает, но я не могу понять, почему у кого-то есть идеи, почему эта установка не работает?
server.js
var express = require('express.io');
var app = module.exports = express();
require('./proxy');
app.http().io();
app.listen(8000);
// ...
proxy.js
var httpProxy = require('http-proxy');
var url = require('url');
httpProxy.createServer(function(req, res, proxy) {
// ...
proxy.proxyRequest(req, res, {
host: destination.host,
port: 80
});
}).listen(9000);
$ netstat -pln | grep node
выход
tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 1487/node
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 1487/node
Правила группы безопасности
1 ответ
Оказалось, что проблема вовсе не связана с приложением или настройкой экземпляра EC2.
Сеть, в которой я находился во время тестирования, блокировала некоторые порты. Вот почему при перемещении прокси в порт 8000
он работал нормально, но на 9000
или любые другие случайные, которые я попробовал, это не было. D'о!