2013-01-11 40 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'哦!

相关问题