我有两个应用程序.哪个电流在两个不同的端口运行. 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