我有两个应用程序.哪个电流在两个不同的端口运行.
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>');
});
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
好吧..它在两个不同的端口上单独运行,没有问题.
现在.故事是,我只能使用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?
Run Code Online (Sandbox Code Playgroud)
在script80.js中,我应该这样做:
app.get('/s1/*', function (res, req)) {
// and what do now? app1(res) ?
}
Run Code Online (Sandbox Code Playgroud)
MMMM
小智 15
如果您有指向此服务器的域或子域,您还可以使用vhost中间件:
app.use(express.vhost('s1.domain.com', require('s1').app));
app.use(express.vhost('s2.domain.com', require('s2').app));
app.listen(80);
Run Code Online (Sandbox Code Playgroud)
完整示例:https://github.com/visionmedia/express/blob/master/examples/vhost/app.js
您可以在端口80上使用nginx侦听,并将代理流量反向代理到其后面的2个不同的快速应用服务器.
location /s1/ {
rewrite /s1(.*) $1 break;
proxy_pass http://localhost:3000;
}
location /s2/ {
rewrite /s2(.*) $1 break;
proxy_pass http://localhost:3001;
}
Run Code Online (Sandbox Code Playgroud)
您也可以在快递中手动编码,但是为什么要重新发明轮子呢?
| 归档时间: |
|
| 查看次数: |
6139 次 |
| 最近记录: |