2014-03-27 87 views
3

我目前正在一台服务器上运行两个StrongLoop LoopBack不同端口的应用程序(Nodejs应用程序)。这两个应用程序都是使用命令行中的slc lb projectslc lb model创建的。如何在同一台服务器上运行多个StrongLoop LoopBack应用程序?

是否可以在具有不同路径和/或子域的单个端口上运行这些应用程序?如果是这样,我如何在Linux机器上做到这一点?

实施例:

http://api.server.com:3000/app1/用于第一应用程序。

http://api.server.com:3000/app2/第二个应用程序。

谢谢。

回答

10

由于LoopBack应用程序是普通的Express应用程序,因此您可以将它们安装在主应用程序的路径中。

var app1 = require('path/to/app1'); 
var app2 = require('path/to/app2'); 

var root = loopback(); // or express(); 
root.use('/app1', app1); 
root.use('/app2', app2); 
root.listen(3000); 

明显的缺点是APP1和APP2之间的高运行耦合 - 每当你升级其中一方,必须重新启动整个服务器(即两者)。在一个应用程序中发生致命故障也会导致整个服务器无法运行。

@fiskeben提供的解决方案更强大,因为每个应用都是孤立的。另一方面,我的解决方案可能更易于管理(您只有一个节点进程而不是nginx + per-app节点进程),并且还允许您配置两个应用程序共享的中间件。

var root = loopback(); 
root.use(express.logger()); 
// etc. 

root.use('/app1', app1); 
root.use('/app2', app2); 
root.listen(3000); 
+0

感谢米罗斯拉夫。我一定会尝试你的,看看我能从这两种解决方案中学到什么。 –

6

您需要在服务器前安装某种代理服务器,例如nginx。 nginx会监听一个端口(比如80),并根据你定义的一些规则(主机名,路径,头文件等)将传入的请求重定向到机器上的其他服务器。

我对nginx的专家,但我会配置它是这样的:

server { 
    listen: 80; 
    server_name api.server.com; 
    location /app1 { 
    proxy_pass http://localhost:3000 
    } 
    location /app2 { 
    proxy_pass http://localhost:3001 
    } 
} 

的nginx还支持通过查询字符串,路径和其他一切,但我会离开它你把在一块:)

看看proxy server documentation为nginx。

+0

谢谢。这对我有用。 :) –

+0

这个工程除了现在的URL都以/ app1或/ app2开头,当他们到达相应的应用程序时... – latj

+0

@latj也许[这个问题的答案](http://serverfault.com/a/ 562850)可以帮助你。 – fiskeben

相关问题