繁体   English   中英

无法连接到 Amazon EC2 上的节点服务器

[英]Can't connect to Node server on Amazon EC2

这是app.js,代码太长,所以我只显示这段代码,其他代码没有问题,我认为这是网络问题。

应用程序.js

app.listen(8080, 'localhost', function () {
    console.log('Express started on http://localhost:' + 8080 + '; press Ctrl-C to terminate.');
});

当我运行lsof -i :8080时,我没有得到任何响应。 但是当我在服务器上运行curl localhost:8080时,我确实得到了响应。

而且我认为安全组没有任何问题。 我允许任何 ip 访问实例,如下所示。

在此处输入图片说明

这实际上是我测试public iplocalhost时的样子

ubuntu@:ip~/$ curl -v 18.217.107.76:8080
* Rebuilt URL to: 18.217.107.76:8080/
*   Trying 18.217.107.76...
* connect to 18.217.107.76 port 8080 failed: Connection refused
* Failed to connect to 18.217.107.76 port 8080: Connection refused
* Closing connection 0
curl: (7) Failed to connect to 18.217.107.76 port 8080: Connection refused
ubuntu@ip:~/$ curl -v localhost:8080
I get response here!

我改变了代码

app.listen(8080, 'localhost', function () {
    console.log('Express started on http://localhost:' + 8080 + '; press Ctrl-C to terminate.');
});

app.listen(8080, function () {
        console.log('Express started on http://localhost:' + 8080 + '; press Ctrl-C to terminate.');
    });

现在它正在工作

这对我有用!!

在您的安全组中,您添加了默认情况下在端口 80 上侦听的 HTTP 规则。

所以基本上,如果您已将节点服务器配置为在端口号 80 以外的端口上运行(我犯了这个错误)并尝试在浏览器上访问公共 DNS(EC2 公共 DNS 可在实例描述中找到),则连接被拒绝错误可能会来,所以您可以做的是将配置中的 PORT 值更改为 80。

你的 config.env 看起来像这样

PORT=80

在你的 server.js 你可以写

const PORT = process.env.PORT;
try {
    app.listen(PORT, () => { console.log(`server running at port ${PORT}`) })
} catch (error) {
    console.log(error)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM