M. *_*sha 5 node.js strongloop loopbackjs
我目前在具有不同端口的单个服务器上运行两个StrongLoop LoopBack应用程序(Nodejs应用程序).这两个应用程序使用创建slc lb project并slc lb model从命令行.
是否可以在具有不同路径和/或子域的单个端口上运行这些应用程序?如果是,我该如何在Linux机器上执行此操作?
例:
http://api.server.com:3000/app1/ 第一个应用程序.
http://api.server.com:3000/app2/ 第二个应用程序.
谢谢.
Mir*_*toš 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);
Run Code Online (Sandbox Code Playgroud)
显而易见的缺点是app1和app2之间的高运行时耦合 - 无论何时升级它们中的任何一个,都必须重新启动整个服务器(即它们两者).一个应用程序中的致命故障也会导致整个服务器崩溃.
@fiskeben提供的解决方案更加强大,因为每个应用程序都是隔离的.
在另一方面,我的解决办法可能是更容易管理(你只有一个节点的过程,而不是nginx的+每个应用节点进程),并允许您配置这两个应用共享的中间件.
var root = loopback();
root.use(express.logger());
// etc.
root.use('/app1', app1);
root.use('/app2', app2);
root.listen(3000);
Run Code Online (Sandbox Code Playgroud)
您需要在服务器前面使用某种代理,例如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
}
}
Run Code Online (Sandbox Code Playgroud)
nginx还支持传递查询字符串,路径和其他所有东西,但我会把它放在一起把它们放在一起:)
查看nginx 的代理服务器文档.
| 归档时间: |
|
| 查看次数: |
5161 次 |
| 最近记录: |