【发布时间】:2018-10-06 14:53:54
【问题描述】:
我正在尝试在 AWS 的 MEAN 堆栈中使用 Express 作为我的服务器。但是,我在尝试设置子域时遇到了问题。我有我的主域名 domain.com 和 id 喜欢 app.domain.com .. 但是我已经尝试了我在网上找到的所有内容来将功能写入 server.js 文件,但没有任何效果。如何轻松完成此操作以使第二个功能而不是在我的 app.domain.com 子域中加载端口 8000 加载?提前致谢!
var express = require('express');
// Main Website
var web = express();
web.get('/', function (req, res){
res.sendFile('/web/index.html', { root: '.' })
});
var port = 9000;
web.listen(port);
console.log('Web Listening on port', port);
//Main Application
var app = express();
app.get('/', function (req, res){
res.sendFile('/app/index.html', { root: '.' })
});
var port = 8000;
app.listen(port);
console.log('Web Listening on port', port);
更新:
我在这里尝试使用 Vhost,但它为主域和子域加载相同的内容,因此它不起作用。这是我使用的代码:
var express = require('express');
var connect = require('connect');
var http = require('http');
var vhost = require('vhost');
// Main Website
var web = express();
web.get('/', function (req, res){
res.sendFile('/web/index.html', { root: '.' })
});
var port = 9000;
web.listen(port);
console.log('Web Listening on port', port);
//Main Application
var app = connect()
app.use(vhost('app.domain.com', function (req, res) {
res.sendFile('/app/index.html', { root: '.' })
httpServer.emit('request', req, res)
}))
app.listen(8000)
我真的不需要将它们放在单独的端口上,这只是我最初尝试的方式。但无论哪种方式都行不通..
【问题讨论】:
-
您是否为
app.domain.com配置了DNS?如果是这样,您是否将其指向与domain.com相同的主机?如果是这样,那么您将需要像 nginx 这样的代理来将app.domain.com请求重定向到端口 8000,除非您想使用 URL 中的端口号,例如http://app.domain.com:8000。 -
这叫做vhosting(虚拟主机)。它曾经是 express 的一部分,但被移到了它自己的模块中:github.com/expressjs/vhost
-
我见过 vhost 但不确定如何编写我的 server.js 文件以真正使用它。
-
@Robert 我提供了一种方法,可以在同一个实例上拥有 2 个快速应用,并为来自不同域的每个应用提供服务。
-
嗨,马科斯,我看到了,谢谢。明天早上我可以试试。我只是希望这会非常简单地通过快递本身来完成..
标签: node.js amazon-web-services express mean