2013-01-11 15 views
5

Aktualizacji: Okazuje się, że jedynym problemem było to, że był za firewallem, który zablokował niektóre porty, ale nie 8000.EC2 gospodarzem aplikacji node.js - nie mogą zdalnie połączyć się z portem


Edycja : TL; DR: nie może połączyć się z portem 9000 zdalnie, ale port 8000 jest ok i nie wiem dlaczego :(


mam ten node.js aplikację Działający na porcie i kolejna (http-proxy) działająca na porcie .

uruchamiając je na moim komputerze jest w porządku, ale mam pewne problemy, kiedy kładę je na serwerze (EC2 instancja - Zrobiłem otworzyć porty w grupie zabezpieczeń konsoli internetowej [1]). Aplikacja działa dobrze, ale nie mogę połączyć się z serwerem proxy z zewnątrz. Próbowałem połączyć się z serwerem $ telnet localhost 9000, więc uważam, że to dobry znak.

Inną rzeczą, którą zauważyłem jest to, że jeśli spróbuję uruchomić aplikacje osobno, otrzymam takie same wyniki, tj .: 8000 - OK, 9000 - NOTOK: <. Jednak jeśli zmienię port używany przez serwer proxy z 9000 na 8000, to działa. A jeśli przełączę porty, tj. Aplikację: 9000 i proxy: 8000, mogę połączyć się z serwerem proxy, ale nie z aplikacją. Próbowałem także innych liczb, ale to też nie naprawiłoby.

Podejrzewam, że jest coś naprawdę głupiego, co nie ma nic wspólnego z samą aplikacją i że tęsknię, ale nie mogę tego zrobić palcem, więc każdy ma pojęcie, dlaczego ta konfiguracja nie działa ?

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 wyjściowe

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 

grupowania reguł bezpieczeństwa

1

+0

Czy skonfigurowałeś instancję EC2 do otwarcia portu 9000? – sheldonk

+0

@sheldonk tak, zrobiłem to i jestem pewien (nie jestem pewien, jak mogę to tutaj pokazać). W tej chwili mam 'iptables -F''d i wszystko działa dobrze ... – andreimic

+1

Musisz także upewnić się, że port 9000 jest otwarty w twojej grupie bezpieczeństwa EC2 - to jest coś, co moim zdaniem musi się wydarzyć przed instancja jest uruchamiana za pierwszym razem, ale nie jest pewna. – Joe

Odpowiedz

3

Okazało się, że problem nie został w ogóle związane z aplikacją lub w konfiguracji instancji EC2.

Sieć, w której byłem podczas testowania, blokowała niektóre porty. Dlatego podczas przenoszenia proxy do portu 8000 działało dobrze, ale na 9000 lub innych losowych, których próbowałem, nie było. D'oh!