Express 应用程序中端口 3000 的意义

Posted

技术标签:

【中文标题】Express 应用程序中端口 3000 的意义【英文标题】:Significance of port 3000 in Express apps 【发布时间】:2016-10-22 02:26:30 【问题描述】:

我注意到几乎所有 Express.js 应用程序示例都使用端口 3000 作为 HTTP 服务器的默认侦听端口。这是因为它是一个很少使用的端口,还是这个端口号有任何其他原因?

如果我想在本地计算机上并排运行多个应用程序,使用 3000、3001、3002 等端口是否是一种好习惯?

(我理解理想情况下,您应该让系统分配端口。这只是一个简单的问题,以及为什么 3000 似乎是常规分配。)

【问题讨论】:

我能看到的唯一原因是,通常在 UNIX 系统中,低端口需要 root 访问权限,而高端口不需要 root 访问权限。例如端口 80 需要 root 访问权限,端口 8080 不需要。我不确定 express 是否有任何其他理由使用 3000 端口。 【参考方案1】:

3000 是一个有点随意选择的端口号,因为它允许您在没有 root 访问权限(提升权限)的情况下尝试使用 express。端口 80 和 443 是默认的 HTTP 和 HTTPS 端口,但在大多数环境中它们需要提升权限。

在示例中使用端口 3000 还有助于间接强调您理想情况下希望将您的 express 应用程序放在 nginx 或 Apache httpd 或类似的会监听端口 80 和/或 443 的东西之后。

没有任何理由(我知道,无论如何)为什么 3000 优于 8000、4000 或 8080 或任何其他无需提升权限即可访问的端口号。

【讨论】:

酷,很有帮助。我还注意到较低的 3xxx 端口没有太多的主要用途,因此它们对于开发使用非常安全。 en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers 还需要注意的是,端口 unix.stackexchange.com/questions/16564/… 对于代理node.js,我觉得Apachehttpd性能不如nginx 我不太明白这部分答案,因为 nginx 不会自动暴露端口 3000 “在示例中使用端口 3000 也有助于间接强调您理想情况下希望将快速应用程序放在 nginx 或Apache httpd 或类似的东西会监听端口 80 和/或 443。” @goonerify nginx 通常会公开端口 80 和/或端口 443,并充当访问使用任意端口(例如 3000)的某些后端服务的代理。通过让 Node.js 示例公开端口 3000 上的 HTTP 服务器,它暗示(至少对我而言)这不是直接暴露给世界的东西。这意味着(再次,至少对我而言)如果您希望世界可以访问它,则应该在其前面放置类似 nginx 的东西。

以上是关于Express 应用程序中端口 3000 的意义的主要内容,如果未能解决你的问题,请参考以下文章

端口 3000 用于 express,端口 8081 用于响应本机,如何发出 get 请求

如何将反应中的默认端口从 3000 更改为另一个端口?

express创建的服务器,只能localhost:3000访问,公网ip无法访问,求解

nodejs脚手架express-generator

node.js表示正在使用的socket.io端口3000

通过重定向将数据从 Express 发送到 React