Node.js アプリ用にいくつかのサブドメインをセットアップしたいと考えています。Express.js を使用してサイトを構築しましたが、サイトのサブドメインに小さな Web ツールを追加したいと考えています。私は vhost ミドルウェアを使用してみましたが、ほとんど運がありませんでしたが、他のアプローチも受け入れています。
どんな助けでも揺れるでしょう!
理想的には、新しい高速アプリをサブディレクトリにドロップして、数行のコードを変更するだけで、DNS 設定を変更するだけで機能する可能性があります。これが欲しい理由は、スタイラスとジェイドの新しいインスタンスを新しいレイアウトや CSS スタイルなどで再利用できるようにするためです。
これが私の通常の app.js です。コメント行は、vhost を使用しようとする試みです。
var express = require('express'),
routes = require('./routes');
var app = module.exports = express.createServer();
// Configuration
app.configure(function() {
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.set('view options', { layout: false });
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use('/courses', function (req, res, next) {
var privates = require('./.private.json'),
couch = require('nano')('https://' + privates.dbCreds.username + ':' + privates.dbCreds.password + '@wamoyo.iriscouch.com/');
});
app.use(require('stylus').middleware({
src: __dirname + '/public'
}));
app.use(app.router);
app.use(express.static(__dirname + '/public'));
// VHOST - SUBDOMAIN
// app.use(express.vhost('adventures.innovationbound.com', require('./adventures/index').app));
app.use(function (req, res, next) {
res.status(404);
res.render('four', {
title: "Innovation Bound",
now: new Date().getFullYear()
});
});
app.use(function (err, req, res, next){
console.error(err.stack);
res.send(500, 'Something broke!');
});
});
app.configure('development', function() {
app.use(express.errorHandler({
dumpExceptions: true,
showStack: true
}));
});
app.configure('production', function() {
app.use(express.errorHandler());
});
// Routes
app.get('/', routes.index);
app.get('/about', routes.about);
app.get('/services', routes.services);
app.get('/events', routes.events);
app.get('/blog', routes.blog);
app.post('/contact', routes.contact);
// Courses
// app.get('/heartbeat', routes.heartbeat);
app.get('/courses', routes.courses);
// Tools
app.get('/point', routes.point);
app.listen(3000, function() {
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
});
これは Express 2.5 を使用しています。必要に応じて 3 に移行してもかまいません。