3

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

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); 

然后我运行 node 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 时,它会显示:

你好世界服务器正在运行

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

我想弄清楚这一点,并了解我的服务器和域如何工作以及如何管理在我的服务器中为不同的 ip/域运行不同的 nodejs 应用程序......

有时 domain-two.com 会打印 domain-one.com app.js 文件 res.send() 应该在另一个域上打印的内容...

我想我现在很困惑......希望你能帮我解决这个问题..

非常感谢

-伊万

4

1 回答 1

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);
于 2014-08-16T22:48:16.830 回答