2013-01-11 76 views
5

更新:原來,唯一的問題是,我是阻止某些端口在防火牆後面,而不是8000EC2託管Node.js應用程式 - 無法遠程連接到端口


編輯:TL; DR:無法連接到端口9000進行遠程,但端口8000是確定的,我不知道爲什麼:(


我有了這個Node.js的是對端口運行的應用程序和另一個(http-proxy)在端口上運行。

運行它們在我的機器上是好的,但我有一些問題,當我把他們的服務器上(EC2實例 - 我做的Web控制檯安全組在打開端口[1])。該應用程序工作正常,但我無法從外部連接到代理。我試圖在服務器上連接$ telnet localhost 9000,所以我想這是個好兆頭。

我注意到的另一件事是,如果我嘗試單獨運行應用程序,我會得到相同的結果,即:8000 - OK,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

+0

您是否配置ec2實例使端口9000打開? – sheldonk

+0

@sheldonk是的,我做了,我確定(不知道我怎麼能在這裏展示它,雖然)。 此刻,我已經'iptables -F''d,它的工作正常...... – andreimic

+1

您還需要確保端口9000在您的EC2安全組中處於打開狀態 - 這是我相信之前必須發生的事情該實例第一次啓動,但不確定。 – Joe

回答

3

原來,這個問題是不是在所有相關的應用程序或EC2實例安裝。

我在測試時遇到的網絡阻塞了一些端口。這就是爲什麼當代理移動到端口8000它工作正常,但在9000或任何其他我試過的隨機的不是。 D'哦!

相關問題