I want to map example.org
and cname.example.org
to two different node.js app.
But use no http web server such as nginx.
And the web framework is express
.
So is there are any middleware in express or node.js to do this?
Express uses connect so you can do this:
var express = require('express'),
app = express();
app.use(express.vhost('example.org', require('./exampleApp/')));
app.use(express.vhost('cname.example.org', require('./cnameExampleApp/')));
app.listen(80);
There is also an example on github: https://github.com/visionmedia/express/tree/master/examples/vhost
And here the reference for connect.vhost: http://www.senchalabs.org/connect/vhost.html
Edit: In recent express versions, most middlewares like vhost are not included, so you will have to install them manually.
First, run:
$ npm install --save vhost
Updated code snippet:
const express = require("express");
const vhost = require("vhost");
const app = express();
app.use(vhost("example.org", require("./exampleApp/")));
app.use(vhost("cname.example.org", require("./cnameExampleApp/")));
app.listen(80);