当前位置 : 主页 > 网页制作 > Nodejs >

如何将两个Node.js App服务器组合在一起.

来源:互联网 收集:自由互联 发布时间:2021-06-16
我有两个应用程序.哪个电流在两个不同的端口运行. script1.js: var express = require('express'), app = require('express').createServer( express.cookieParser(), // Parses x-www-form-urlencoded request bodies (and json) ex
我有两个应用程序.哪个电流在两个不同的端口运行.

script1.js:

var express = require('express'),
    app = require('express').createServer(

         express.cookieParser(),
          // Parses x-www-form-urlencoded request bodies (and json)
          express.bodyParser()  
    )
    ;

app.get('/s1/output', function(sReq, sRes){
    // set cookie

    sRes.send('<div>Out from 1!</div>');
});

app.listen(3000);

这是script2.js

var express = require('express'),
    app = require('express').createServer(

         express.cookieParser(),
          // Parses x-www-form-urlencoded request bodies (and json)
          express.bodyParser()  
    )
    ;

app.get('/s2/output', function(sReq, sRes){
    // set cookie

    sRes.send('<div>Out from 2!</div>');
});
app.listen(3001);

好吧..它在两个不同的端口上单独运行,没有问题.

现在.故事是,我只能使用80端口进行制作.系统管理员不想打开3000或其他端口.

而不是合并代码. (事实上​​,我的真实代码很多.并且对script1和script2有不同的配置设置),我该怎样做才能在端口80上创建它们?但调用/ s1 / output将转到script1,/ s2 / output将转到script2?

我正在考虑使用另一个脚本.在端口80上运行的script80.js.
它需要script1和script2.

但是,问题是,我应该从脚本1和脚本2导出什么?我是不是该:

define all get / post methods, and then, 
module.exports.app =app?

在script80.js中,我应该这样做:

app.get('/s1/*', function (res, req)) {
   // and what do now?  app1(res) ?
}

MMMM

如果您有指向此服务器的域或子域,您还可以使用vhost中间件:

app.use(express.vhost('s1.domain.com', require('s1').app));
app.use(express.vhost('s2.domain.com', require('s2').app));

app.listen(80);

完整示例:https://github.com/visionmedia/express/blob/master/examples/vhost/app.js

网友评论