node.js:将请求路由到同一主机上的不同端口

Bar*_*art 8 node.js express

我有一台主机,它服务于许多 web 应用程序(不是基于 node.js 的)。它使用不同的端口来做到这一点。这意味着例如以下应用程序是实时的:

接下来,我有一个基于 node.js 的 webapp(在端口 80 上运行),我想将其用作一种路由器。当有人导航到http://localhost/app/app1 时。我希望它导航到http://hostname:3000。使用简单的重定向,这相对简单。但是,我想保留网址http://localhost/app/app1。有人可以指出一种使用 node.js/express 进行这项工作的方法吗?

我的路由逻辑看起来有点像这样(伪代码)。

app.route('/app/:appName')
   .get(appEngine.gotoApp);

appEngine.gotoApp = function(req, res) {
    redirectToApp logic 
    }
Run Code Online (Sandbox Code Playgroud)

Luc*_*llo 1

如果您使用express,您可以尝试使用cliexpress应用程序生成器创建应用程序。

它创建一个 Express 应用程序并通过模块导出返回它。

在 server.js 文件中,它将 Express 应用程序对象传递给服务器实例的侦听函数。

您可以创建更多服务器对象并使用不同端口监听不同的应用程序。

var server = http.createServer(app);
server.listen(port);
var server2 = http.createServer(app2);
server2.listen(port2);
Run Code Online (Sandbox Code Playgroud)

如果你想根据 url 指向不同的应用程序,你可以实例化一个 Express 路由器而不是 Express 对象。

var app1 = express.Router();
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用经典的 get 或 post 或其他方法将所有路由设置到该对象中。

现在您可以将路由器作为主 Express 应用程序的中间件进行传递。

app.use( "app1/", app1 );
Run Code Online (Sandbox Code Playgroud)

您还可以将 Express 应用程序传递给中间件,而不是路由器对象,以便获得使用不同的 url 和端口服务器侦听来执行应用程序的可能性。