我回到这里遇到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
答案 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);