EC2托pipe了Node.js应用程序 – 无法远程连接到端口

更新 :原来唯一的问题是,我在一个防火墙阻止了一些端口,但不是8000。


编辑: TL; DR:无法远程连接到端口9000,但端口8000是好的,我不知道为什么:(


我有这个在端口8000上运行的node.js应用程序和在端口9000上运行的另一个( http-proxy )。

在我的机器上运行它们是好的,但是当我将它们放在服务器( EC2实例 – 我确实打开了Web控制台安全组[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 $ 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

事实certificate,问题与应用程序或EC2实例设置没有任何关系。

我在testing时所在的networking阻塞了一些端口。 这就是为什么当将代理移动到8000端口时,它工作正常,但在9000或任何其他我试过的随机的不是。 D'哦!