我应该在node.js上监听哪些端口? 如何和为什么?

我的node.js应用程序,我听港口80 HTTP和443的HTTPS,我相信是相当标准的做法。

然而,我最近阅读的一些例子使用其他端口(例如8080和8081)来监听http / https,然后使用其他方法(例如iptablesufw规则)通过将数据包路由到其他端口来为端口ufw服务。

在这里和这里看到两个例子。

所以我的问题是为什么我不想直接听港口80和443?

手头有安全问题吗? 这仅仅是这些作者没有权限在低于1024的端口上进行侦听的情况吗(我觉得这很令人惊讶?)? 大多数人是否在边节点上运行Apache? (我不)。

假设有一个很好的理由,为什么我不想直接听80和/或443, 我应该用什么方法将stream量从80/433转发到我select的其他端口?

我已经提到了上面的iptables和ufw,其中一个比其他的更好,还是有其他方法可以使用? 答案取决于我是否在stream程之间平衡了我的负载?

提前致谢。

您链接的第一篇文章的第一行提到了原因。

 Standard practices say no non-root process gets to talk to the Internet on a port less than 1024. 

对于绑定到端口80443节点,您需要以root身份运行它,这不是一个好主意。

您用于将stream量重新路由到较高端口的方法取决于您。 iptables是最不耗费资源和最简单的。 另一种方法是使用NginX / Apache代理节点。 我会说这种方法的主要好处是,你可以从那里服务静态文件,而不必通过节点服务。

Apache和NginX都是精心devise的,能够很好的服务于静态文件,所以它们非常擅长,而Node是一个完整的JS环境,涉及到所有的开销。 节点在处理大量的同时连接方面非常出色,它可以为正常的负载提供完美的文件服务,但是比NginX使用更多的资源。

使用像Apache / NginX这样的HTTP-aware代理也意味着你可以很容易地设置多个Node实例来运行不同的子域,甚至在同一个域上运行不同的path。