微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

更新:原来唯一的问题是我在阻止某些端口的防火墙后面,但不是8000.

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

我有这个在端口8000上运行的node.js应用程序和在端口9000上运行的另一个(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,{
        host: destination.host,port: 80
    });

}).listen(9000);

$netstat -pln | grep节点输出

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实例设置完全无关.

我在测试时遇到的网络阻塞了一些端口.这就是为什么当代理移动到端口8000它工作正常,但在9000或任何其他随机的,我尝试它不是. D’哦!

原文地址:https://www.jb51.cc/nodejs/445725.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐