哪些端口应我的Node.js听吗? 如何以及为什么?(What ports should I n

2019-07-20 02:19发布

我的node.js应用程序我已经在80端口监听http和https为443,这是我认为是相当标准的做法。

然而一些例子我最近已阅读使用其他端口(例如8080和8081),用于收听HTTP / HTTPS,然后使用其它手段如iptablesufw规则经由来自他人重新路由分组至/服务端口四百四十三分之八十零。

见两个例子在这里和这里 。

所以我的问题是为什么我不希望直接听取端口80和443?

在手里有安全问题? 难道仅仅是没有权限,这些作者在端口上侦听低于1024的情况下(我发现这个奇怪?)? 大部分人都沿着侧节点运行Apache? (我不)。

假设有一个很好的理由,为什么我不想要听直接到80和/或443, 我应该使用中继从四百三十三分之八十零流量到我的替代选择的端口,方法是什么?

我刚才提到的iptables及以上UFW,是这些人比别人更好,还是有我应该使用一些其他的方法? 其答案是否取决于我是否平衡过程之间我的负荷?

提前致谢。

Answer 1:

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

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

对于节点绑定到端口80443 ,你需要root权限运行它,这不是一个好主意。

你用它来将业务重新路由到更高的端口的方法是你。 在iptables是最少的资源密集型和简单。 另一种方法是使用Nginx的/ Apache来代理节点。 我想说的是方法的主要好处是,你可以再兼任之类的静态文件从那里,并没有通过节点来为他们服务。

Apache和Nginx的均明确设计为在提供静态文件非常好,所以他们在这非常好,而Node是一个整体JS的环境,与所有所涉及的开销。 节点是在发放大量的并发连接的伟大,它当然可以作为文件非常清楚的正常负荷,但会使用更多的资源比Nginx的做到这一点。

使用如Apache / Nginx的一个HTTP感知代理也意味着,你可以很方便地设置节点的多个实例在同一个域中运行不同的子域,甚至是不同的路径。



文章来源: What ports should I node.js listen on? How and why?