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

Node.js on multiple domains using express.vhosts()

本文关键字:js Node vhosts express 使用      更新时间:2023-09-26

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

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

xxx.xxx.xxx.123IP分配给domainone.comxxx.xxx.xxx.xxx。456被分配给domain-two.com

都运行nodejs服务器app.js并且每个分配在/var/www/vhosts/[域名]/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  

Ok,一切都如我所愿(我想),所以我打开浏览器,输入 domainone.com:3031,在其他选项卡中输入domaintwo.com:3032

但是在两个域中都放弃连接超时…当我运行domain-one。com:3030时它会显示:

hello world服务器正在运行

但不是在domain2-.com:3030,它也挂起了…

我,想让我的头围绕这个,了解一点关于我的服务器和域是如何工作的,以及如何管理运行不同的nodejs应用程序在我的服务器不同的ip/域…

有时候domaintwo.com打印的是domainone.com app.js文件res.send()应该在另一个域名上打印的内容…

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

Thanks a lot

客人

使用这种简单而精确的语法可能会更好:
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);