javascript-使用express.vhosts()在多个域上的Node.js
作者:互联网
我回到这里遇到一个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 / [域名] /node/app.js中
运行虚拟主机的服务器位于/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 the server running
但不在domain-two.com:3030中也挂起.
我想了解这一点,并了解一下我的服务器和域如何工作以及如何在服务器中为不同的IP /域运行不同的Node.js应用…
somethimes在domain-two.com上打印出domain-one.com app.js文件res.send()应该在其他域上打印的内容…
我想我现在很困惑.希望您能帮助我.
非常感谢
-伊凡
解决方法:
使用这种简单而精确的语法可能会更好:
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);
标签:vhosts,node-js,ip,express,javascript 来源: https://codeday.me/bug/20191031/1975726.html