在同一端口上运行多个节点(快速)应用程序
我有多个Node应用程序(构build在Express框架上)。
现在我已经把它们放在这里了 –
/var/www/app1
-
/var/www/app2
-
/var/www/app3
现在我想在同一个端口上运行这3个应用程序(比如8080)。 那可能吗 ?
有一点要注意的是,每个应用程序都有像这样的通用路线 –
-
app.get('/', func...);
-
app.get('/about', func...);
-
app.post('/foo', func...);
-
app.post('/bar', func...);
基本上我想这样做,就像你可以用Apache / PHP的设置。
所以,当你有一个LAMP堆栈 –
-
/var/www/app1
-
/var/www/app2
-
/var/www/app3
您可以轻松地将它们作为不同的应用程序从 –
-
localhost/app1
-
localhost/app2
-
localhost/app3
你可以使用app.use()
:
app .use('/app1', require('./app1/index').app) .use('/app2', require('./app2/index').app) .listen(8080);
你可以运行它们作为单独的应用程序监听不同的端口,然后有一个代理服务器(如https://github.com/nodejitsu/node-http-proxy/ )根据请求的URL在8080上提供所有的东西。
喜欢:
var options = { router: { 'foo.com/baz': '127.0.0.1:8001', 'foo.com/buz': '127.0.0.1:8002', 'bar.com/buz': '127.0.0.1:8003' } };
像我一样的魅力( http://nerdpress.org/2012/04/20/hosting-multiple-express-node-js-apps-on-port-80/ )。 我不是那么热衷于把它们作为子应用程序安装,因为我想让它们独立运行。
你可以创build一个主应用程序(比如app)并行到你的应用程序,并使用app.use('',require('./ app1 / yourApp.js)来初始化辅助应用程序(在你的情况下为app1,app2,app3) “)。
所有的应用程序(app1,app2,app3)都需要创build应用程序并使用var app = module.exports = express()导出它。 你不需要在所有的子程序中创build服务器实例或者调用app.listen; 所有的子应用程序可以通过主应用程序侦听端口来提供服务。