Express.js vhost子域名设置

Cos*_*sta 5 subdomain vhosts node.js express

试图建立connect的vhost中间件.会爱一些帮助.

我有我的普通express.js应用程序,包含node_modules,public,views和routes目录.我添加了另一个目录旁边的另一个目录,其中包含另一个express.js应用程序.

我已将此行添加到我的顶级应用程序(tedxgramercy):

app.use(express.vhost('chatter.tedxgramercy.com', require('./chatter/app.js').app));
Run Code Online (Sandbox Code Playgroud)

这一行到我的聊天应用程序:

var app = exports.app = express();
Run Code Online (Sandbox Code Playgroud)

聊天应用程序调用侦听端口8000,主要(顶级)应用程序调用侦听端口3000.我不知道这是否正确.

当我启动我的应用程序(节点应用程序)时,它运行正常,我可以分别访问localhost:3000和localhost:8000上的两个应用程序,但是当我部署到我的服务器时,子域名http://chatter.tedxgramercy.com不会工作.

有什么指针吗?我是否必须将DNS更改为指向其他端口或其他东西?

Pie*_*eau 9

这是一个简单但有点棘手的设置.

一,主要app.js:

var vhost = require('vhost');

app.use(vhost('chatter.tedxgramercy.com', require('./chatter/app').app))
app.use(router);
Run Code Online (Sandbox Code Playgroud)

我包含了路由器,以明确配置虚拟主机使用它是至关重要的.

然后,在chatter/app.js:

var express = require('express');
var app = express();
var path = require('path');

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

var router = express.Router();

router.get('/', function(req, res, next) {
  res.render('index');
});

app.use(router);

exports.app = app;
Run Code Online (Sandbox Code Playgroud)

这是在子应用程序中呈现Jade模板的最低限度设置.请注意,应用程序已导出,但实际上没有服务器启动,因为主应用程序是服务器.

  • 错误:大多数中间件(如虚拟主机)不再与 Express 捆绑在一起,必须单独安装。 (2认同)
  • 需要澄清:为什么在 chatter/app.js 中使用路由器?`app.get('/')` 也同样工作 (2认同)