Node.js + Express : app won't start listening on port 80

标签 node.js amazon-ec2 port express

我创建并启动这样的应用程序:

express -s -t ejs
npm install express
npm install ejs
node app.js

它可以工作(在端口 3000 上)。但是当我将端口更改为 80 时,运行 node app.js 会输出:

node.js:198
throw e; // process.nextTick error, or 'error' event on first tick
          ^
TypeError: Cannot call method 'getsockname' of null
at HTTPServer.address (net.js:746:23)
at Object.<anonymous> (/var/www/thorous/app.js:35:67)
at Module._compile (module.js:432:26)
at Object..js (module.js:450:10)
at Module.load (module.js:351:31)
at Function._load (module.js:310:12)
at Array.<anonymous> (module.js:470:10)
at EventEmitter._tickCallback (node.js:190:26)

这也适用于我的笔记本电脑,但不适用于我的 Amazon EC2 实例,其中端口 80 是开放的。 可以弄清楚是什么问题。有什么建议吗?

最佳答案

如果您真的想这样做,您可以将端口 80 上的流量转发到 3000。

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000

关于Node.js + Express : app won't start listening on port 80,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7929563/

相关文章:

amazon-web-services - 如何在亚马逊 Linux 发行版上安装 nginx 1.9.15

amazon-ec2 - AWS EC2 实例重启会丢失所有 CPU 积分

linux - 如何在 Linux 中打开端口

node.js - Passport.js 多种反/序列化方法

javascript - 是什么决定了 promise 拒绝在 node.js(控制台/脚本)中未处理?

jquery - 无法在客户端 html 上打印 json 响应

node.js - 为什么MongoDB Node Driver生成实例池被破坏错误?

php - 亚马逊 AWS 上的虚拟主机(PHP + MySQL)

Java:Apache Mina IoAcceptor 无法在 Linux 中解除绑定(bind)

c - 如何使用 C 程序获取打开特定端口的进程的进程 ID?