更新:原来,唯一的问题是,我是阻止某些端口在防火墙后面,而不是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
安全组规则
您是否配置ec2实例使端口9000打开? – sheldonk
@sheldonk是的,我做了,我确定(不知道我怎么能在这里展示它,虽然)。 此刻,我已经'iptables -F''d,它的工作正常...... – andreimic
您还需要确保端口9000在您的EC2安全组中处于打开状态 - 这是我相信之前必须发生的事情该实例第一次启动,但不确定。 – Joe