因此,我已经设置了 NGINX 来在 GNU/Linux Debian 8 上为每个用户提供静态网站,使用以下命名约定:http://domain/~username
。每个用户的公共 Web 文件夹都位于他们各自的主目录中,这也是他们保存 Node.js 项目的地方。
问题
这一切都很好,但是我怎样才能阻止不同的用户启动使用端口号冲突在同一域名上?或者更简洁地说,如何强制每个用户在 Node.js 中只使用一个唯一的端口号?或者我甚至需要这样做吗?是否可以以某种方式捕获用户的 Node.js 实例,然后将其转换为符合上述命名约定的内容?如果可以,怎么做?
www.example.com/~jsmith
示例:如果用户 JSmith 使用 Node.js 创建了一个网站并运行它,则无论 JSmith 在其 Node.js 应用程序中使用了什么其他域或端口设置,都应发布该网站。
答案1
Node.js 通常充当自己的 HTTP 服务器,对吧?因此,如果他们都在同一个 Ubuntu 服务器上执行他们的 node.js 项目,并且假设他们并非都拥有 root 权限,那么他们将在该服务器的 IP 地址上的临时端口范围 (49152–65536) 中打开 TCP 侦听器端口。Ubuntu 的 Linux 内核的 TCP/IP 堆栈将确保没有两个活动进程可以同时打开同一个端口。要连接到他们的 node.js 应用实例,他们必须连接到http://www.example.com:端口/(在哪里港口是他们能够打开的任何端口)。