Pat*_*nek 2 port vhosts node.js express express-vhost
我正在尝试从不同的server.js文件(不同的目录、配置等)在同一端口和服务器上运行 2 个 NodeJS 实例。我的服务器提供商给了我一个vhost针对不同域运行的信息,这就是问题所在。如何在 NodeJS Express 应用程序中处理它?我试过vhost从https://github.com/expressjs/vhost像这样使用:
const app = express();
const vhost = require('vhost');
app.use(vhost('example1.org', app));
// Start up the Node server
app.listen(4100, () => {
console.log(`Node server listening on 4100`);
});
Run Code Online (Sandbox Code Playgroud)
对于这样的第二个应用程序:
const app = express();
const vhost = require('vhost');
app.use(vhost('example2.org', app));
// Start up the Node server
app.listen(4100, () => {
console.log(`Node server listening on 4100`);
});
Run Code Online (Sandbox Code Playgroud)
但是当我尝试运行第二个实例时,我得到了EADDRINUSE ::: 4100,所以 vhost 在这里不起作用。
你知道如何解决吗?
您只能让一个进程侦听一个端口,不仅在 Node.js 中,而且在一般情况下(除了此处不适用的例外)。
您可以通过以下两种方式之一实现您的需求:
您可以将应用程序整合到一个应用程序中,侦听一次,然后将每个主机的请求转发到单独的代码位 - 如果您仍然想实现代码分离,则单独的代码位可以是 NPM 模块,这些模块实际上是独立编写和维护的.
您可以在某个空闲端口上运行 2 个节点进程,例如 5000 和 5001,并使用网络服务器根据主机自动将请求转发给它。我为此推荐 Nginx,因为它的代理功能相对容易设置,而且功能强大。它在不使用太多系统资源方面也相当不错。Apache 和其他人也可以用于此,但我个人喜欢 Nginx。
我的建议是您安装一个网络服务器并将公开端口上的请求转发到单独运行的节点进程。我实际上建议您在代理后运行节点作为项目的默认值,并且仅在特殊情况下直接公开它。如果您的应用程序已经涉及到经过良好强化的服务器设置,您将获得许多配置选项、安全性和可扩展性优势。
| 归档时间: |
|
| 查看次数: |
2325 次 |
| 最近记录: |