gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 23:43:39 25 4
gpt4 key购买 nike

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

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

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

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

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

hello world the server running

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

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

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

关于javascript - 多个域上的 Node.js 使用 express.vhosts(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14169742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com