使用express.vhosts()在多个域上的Node.js

时间:2013-01-05 07:37:42

标签: javascript node.js express ip vhosts

我回到这里遇到nodejs问题,我正在编写一个节点服务器,允许两个或更多app.js使用express.vhost()在同一系统上运行。但我现在很迷茫。

webhost服务器是运行Ubuntu和plesk的专用服务器,我为不同的域分配了2个ip。

xxx.xxx.xxx.123 IP已分配给domain-one.com xxx.xxx.xxx.xxx.456已分配给domain-two.com

都运行nodejs服务器app.js. 并分别在/ var / www / vhosts / [domain-name] /node/app.js

中分配

运行vhost的服务器位于/var/www/node/server.js这里是代码

var express = require("express");
var app = express();

app
.use(express.vhost('domain-one.com', require('/var/www/vhosts/domain-one.com/node/app.js').app))
.use(express.vhost('domain-two.com', require('/var/www/vhosts/domain-two.com/node/app.js').app))
.listen(3030);


app.get('/', function(req, res){
  res.send('hello world the server running ');
});

在每个app.js中

var express = require('express'),
    routes  = require('./routes');

var app = exports.app = express.createServer();

app.get('/', function(req, res){
  res.send('hello world test file for [domain-name] running');
});

//port 3031 for domain-one.com
//port 3032 for domain-two.com
app.listen(3031); 

然后我运行节点server.js,一切正常,没有错误。

然后我运行 netstat -anltp

tcp        0      0 0.0.0.0:3030            0.0.0.0:*               LISTEN      19839/node      
tcp        0      0 0.0.0.0:3031            0.0.0.0:*               LISTEN      19839/node      
tcp        0      0 0.0.0.0:3032            0.0.0.0:*               LISTEN      19839/node  

好的一切都按照我的预期(我想),所以我打开浏览器并输入 domain-one.com:3031 和其他标签domain-two.com:3032

但在两个域中删除了连接超时...当我运行domain-one.com:3030时,它会显示:

  

hello world运行服务器

但不是在domain-two.com:3030它也挂起..

我想了解一下这个并理解我的服务器和域如何工作以及如何设法在我的服务器中为不同的ip /域运行不同的nodejs应用程序......

somethimes domain-two.com打印domain-one.com app.js文件res.send()应该在另一个域上打印...

我想我现在非常困惑...希望你能帮助我解决这个问题。

非常感谢

-ivan

1 个答案:

答案 0 :(得分:4)

这种简单而精确的语法可能更好:
https://github.com/expressjs/vhost

//
// Module dependencies
//
var express = require('express');
var vhost = require('vhost');
var app = express();


//
// vhosts
//
app
  .use(vhost('app1.io', require('./app1/app.js')))
  .use(vhost('app2.io', require('./app2/app.js')))
  .use(vhost('app3.io', require('./app3/app.js')))
  .listen(8080);