在同一服务器和域上运行多个节点应用程序

时间:2018-03-05 17:37:21

标签: node.js backend microservices

我想将我拥有的应用程序拆分为多个不同的应用程序。我想从表示层和逻辑层开始。我希望HTML,CSS和JS都在其自己的应用程序中,但后来在其自己的应用程序中运行后端代码(API)。我不明白如何在同一台服务器上运行。目前我的杂草丛生的应用程序在端口8080上运行,我使用Nginx对/位置的端口8080执行proxy_pass。

我在这做什么?

2 个答案:

答案 0 :(得分:0)

也许你可以运行多个节点实例,当然这需要是一个不同的版本。在不同的端口运行并与proxy_pass匹配。 我可能会帮助你。

答案 1 :(得分:0)

我的建议是使用视图引擎,例如EJS等。

node.js 中,您可以向用户发送HTML文件,例如当有人访问 www.domain.com/register 时,您会向他发送一个HTML文件,通过使用这样的东西:

var path = require('path'); // Core Module in Node JS
res.sendFile( path.join( __dirname, "register.html" ) ); // Send the register HTML file

虽然它不是最干净的解决方案,也可以在代码中创建多个服务器,每个服务器使用不同的端口

由于您希望在同一台服务器上使用前端后端,因此您可以在端口80上为前端创建一台服务器(如果您需要,则为443)使用SSL)和另一个端口上的其他服务器,例如3000,或者你想要的任何东西。

然后,您可以使用Ajax或类似的东西从服务器获取信息,这完全取决于您。

以下是一个例子:

const http = require('http');

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.write('Front End!');
    res.end();
  }).listen(80);

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.write('Back End!');
    res.end();
}).listen(3000);

我个人总是会选择第一个例子,因为这是大多数人选择的,而且实施起来要容易得多。

此外,视图引擎允许您将 node.js 应用程序中的变量嵌入到HTML文件中,因此不需要Ajax等。