在同一台机器上运行多个唯一的 nodejs 网络服务器

Posted

技术标签:

【中文标题】在同一台机器上运行多个唯一的 nodejs 网络服务器【英文标题】:Multiple unique nodejs webservers running on the same machine 【发布时间】:2020-04-27 06:50:29 【问题描述】:

我有几个网络服务器在一台机器上运行,目前,为了选择你想要服务的网站,你必须切换你正在连接的端口(域:8000,域:8001),但我真的不喜欢这个解决方案。我的目标是能够通过 domain/process1、domain/process2 进行连接,但是问题是 dns 总是要连接到 domain:80 然后通过路由来表达(我用于服务器的内容)

我知道我可以使用 express 来控制运行的代码

app.get('/process1', (req, res)=>
   process1.getRequest(req, res);
   next();
);
app.get('/process2', (req, res)=>
   process2.getRequest(req, res);
   next();
);

但是,这要求我的所有进程都在单个 nodejs 实例中运行。我希望不必修改我当前的任何网络服务器,只需创建一个新进程,该进程将在端口 80 上运行,并根据路由将流量重定向到不同的本地端口。

我见过This question,但是他们有多个域,而我只有一个域。 我还阅读了一些关于反向代理/nginx 的信息,如果可能的话,我很想留在 nodejs 中。是否可以在节点中创建我自己的反向代理?

【问题讨论】:

【参考方案1】:

您可以拥有单个域,但仍可以使用像 nginx 这样的反向代理。

看看这篇文章https://medium.com/@samanbaboli/how-to-load-balancing-nodejs-apps-using-nginx-a3b4ceb7c782。

Ps:使用 nginx 不需要付费。 https://www.nginx.com/resources/wiki/

【讨论】:

很高兴知道 nginx 是免费的,但是对我来说,一个最佳的独奏将是我可以在我的机器上安装新服务的需要。我可以在 nodejs 中以某种方式创建自己的反向代理,还是使用 linux (ubuntu) 中的内置工具?

以上是关于在同一台机器上运行多个唯一的 nodejs 网络服务器的主要内容,如果未能解决你的问题,请参考以下文章

RPC over TCP 与同一台机器上的多个客户端

具有不同.net版本的多个应用程序可以在同一台服务器机器上运行吗

当多个java程序在同一台机器上运行时

在同一台开发机器上运行多个 Netty 客户端和服务器

如何从同一网络中的另一台计算机访问我的 nodejs-express localhost 服务器?

我可以在同一台机器上运行多个elasticsearch实例进行日志聚合吗?